Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
L
learn-online-pc
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
learn-online-pc
Commits
2e07d544
提交
2e07d544
authored
4月 14, 2020
作者:
lihuihui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
办事大厅
上级
bb1317b0
隐藏空白字符变更
内嵌
并排
正在显示
15 个修改的文件
包含
1411 行增加
和
22 行删除
+1411
-22
AffairsAction.js
client/src/action/AffairsAction.js
+19
-0
index.js
client/src/action/index.js
+4
-1
affairs_api.js
client/src/api/affairs_api.js
+32
-0
index.js
client/src/api/index.js
+4
-1
tap.vue
client/src/components/comTable/tap.vue
+6
-8
sidebar.vue
client/src/components/learnSysLayout/sidebar.vue
+2
-2
againAdd.vue
client/src/pages/affairsHall/againAdd.vue
+198
-0
hall.vue
client/src/pages/affairsHall/hall.vue
+228
-0
learningAdd.vue
client/src/pages/affairsHall/learningAdd.vue
+226
-0
myApply.vue
client/src/pages/affairsHall/myApply.vue
+194
-0
shareAdd.vue
client/src/pages/affairsHall/shareAdd.vue
+213
-0
uploadReport.vue
client/src/pages/affairsHall/uploadReport.vue
+176
-0
viewReport.vue
client/src/pages/affairsHall/viewReport.vue
+99
-0
routes.js
client/src/router/routes.js
+8
-8
config.js
server/server/config.js
+2
-2
没有找到文件。
client/src/action/AffairsAction.js
0 → 100644
浏览文件 @
2e07d544
import
BaseACTION
from
'./base_action'
import
{
Affairs
}
from
'@api'
export
default
class
AffairsAction
extends
BaseACTION
{
/* 获取事务类型 */
getAffairsType
()
{
return
Affairs
.
getAffairsType
().
then
(
res
=>
res
)
}
/* 获取事务列表内容 */
getAffairsData
(
obj
)
{
return
Affairs
.
getAffairsData
(
obj
).
then
(
res
=>
res
)
}
/* 提交事务申请 */
submitLearning
(
obj
)
{
return
Affairs
.
submitLearning
(
obj
).
then
(
res
=>
res
)
}
/* 删除事务 */
deleteAffairs
(
reid
)
{
return
Affairs
.
deleteAffairs
(
reid
).
then
(
res
=>
res
)
}
/* 获取事务详情 */
getAffairsDetails
(
rid
)
{
return
Affairs
.
getAffairsDetails
(
rid
).
then
(
res
=>
res
)
}
/* 修改事务 */
updateAffairs
(
rid
,
obj
)
{
return
Affairs
.
updateAffairs
(
rid
,
obj
).
then
(
res
=>
res
)
}
/* 重修图片上传 */
uploadFile
(
obj
)
{
return
Affairs
.
uploadFile
(
obj
).
then
(
res
=>
res
)
}
}
client/src/action/index.js
浏览文件 @
2e07d544
...
@@ -5,6 +5,7 @@ import ReportAction from './ReportAction'
...
@@ -5,6 +5,7 @@ import ReportAction from './ReportAction'
import
PlayerAction
from
'./PlayerAction'
import
PlayerAction
from
'./PlayerAction'
import
DiscussAction
from
'./DiscussAction'
import
DiscussAction
from
'./DiscussAction'
import
FeedbackAction
from
'./FeedbackAction'
import
FeedbackAction
from
'./FeedbackAction'
import
AffairsAction
from
'./AffairsAction'
const
Other
=
new
OtherAction
()
const
Other
=
new
OtherAction
()
const
Course
=
new
CourseAction
()
const
Course
=
new
CourseAction
()
...
@@ -13,6 +14,7 @@ const Report = new ReportAction()
...
@@ -13,6 +14,7 @@ const Report = new ReportAction()
const
Player
=
new
PlayerAction
()
const
Player
=
new
PlayerAction
()
const
Discuss
=
new
DiscussAction
()
const
Discuss
=
new
DiscussAction
()
const
Feedback
=
new
FeedbackAction
()
const
Feedback
=
new
FeedbackAction
()
const
Affairs
=
new
AffairsAction
()
const
cAction
=
{
const
cAction
=
{
Other
,
Other
,
...
@@ -21,7 +23,8 @@ const cAction = {
...
@@ -21,7 +23,8 @@ const cAction = {
Report
,
Report
,
Player
,
Player
,
Discuss
,
Discuss
,
Feedback
Feedback
,
Affairs
}
}
/**
/**
...
...
client/src/api/affairs_api.js
0 → 100644
浏览文件 @
2e07d544
import
BaseAPI
from
'./base_api'
export
default
class
AffairsAPI
extends
BaseAPI
{
/**
* 获取事务类型
*/
getAffairsType
=
()
=>
this
.
get
(
'/v2/lobby/affairs'
)
/**
* 获取事务类型
*/
getAffairsData
=
(
obj
=
{})
=>
this
.
get
(
'/v2/lobby/processes'
,
obj
)
/**
* 提交活动申请
* affair_id 活动名称
* symposium_name 活动时间
* symposium_contents 活动讲师
* symposium_attachments 活动内容
* symposium_time 活动附件
* symposium_address 活动地点
* symposium_lecturer
* 返回 {'flag' : true, 'errors' : []}
*/
submitLearning
=
(
obj
=
{})
=>
this
.
post
(
'/v2/lobby/processes'
,
obj
)
/* 删除事务 */
deleteAffairs
=
(
reid
)
=>
this
.
delete
(
`/v2/lobby/processes/
${
reid
}
`
,
{})
/* 获取事务详情 */
getAffairsDetails
=
(
rid
)
=>
this
.
get
(
`/v2/lobby/processes/
${
rid
}
`
,
{})
/* 修改事务 */
updateAffairs
=
(
rid
,
obj
=
{})
=>
this
.
post
(
`/v2/lobby/processes/
${
rid
}
`
,
obj
)
/* 重修图片提交 */
uploadFile
=
(
obj
=
{})
=>
this
.
post
(
'/v2/lobby/tools/upload'
,
obj
,
{
headers
:
{
'Content-Type'
:
'multipart/form-data'
}
})
}
client/src/api/index.js
浏览文件 @
2e07d544
...
@@ -5,6 +5,7 @@ import ReportAPI from './report_api'
...
@@ -5,6 +5,7 @@ import ReportAPI from './report_api'
import
PlayerAPI
from
'./player_api'
import
PlayerAPI
from
'./player_api'
import
DiscussAPI
from
'./discuss_api'
import
DiscussAPI
from
'./discuss_api'
import
FeedbackAPI
from
'./feedback_api'
import
FeedbackAPI
from
'./feedback_api'
import
AffairsAPI
from
'./Affairs_api'
const
Other
=
new
OtherAPI
(
webConf
)
const
Other
=
new
OtherAPI
(
webConf
)
const
Course
=
new
CourseAPI
(
webConf
)
const
Course
=
new
CourseAPI
(
webConf
)
...
@@ -13,6 +14,7 @@ const Report = new ReportAPI(webConf)
...
@@ -13,6 +14,7 @@ const Report = new ReportAPI(webConf)
const
Player
=
new
PlayerAPI
(
webConf
)
const
Player
=
new
PlayerAPI
(
webConf
)
const
Discuss
=
new
DiscussAPI
(
webConf
)
const
Discuss
=
new
DiscussAPI
(
webConf
)
const
Feedback
=
new
FeedbackAPI
(
webConf
)
const
Feedback
=
new
FeedbackAPI
(
webConf
)
const
Affairs
=
new
AffairsAPI
(
webConf
)
export
{
export
{
Other
,
Other
,
...
@@ -21,5 +23,6 @@ export {
...
@@ -21,5 +23,6 @@ export {
Report
,
Report
,
Player
,
Player
,
Discuss
,
Discuss
,
Feedback
Feedback
,
Affairs
}
}
client/src/components/comTable/tap.vue
浏览文件 @
2e07d544
...
@@ -40,14 +40,13 @@ export default {
...
@@ -40,14 +40,13 @@ export default {
},
},
methods
:
{
methods
:
{
selFindSelect
(
e
)
{
selFindSelect
(
e
)
{
let
_data
=
e
.
currentTarget
.
dataset
const
_data
=
e
.
currentTarget
.
dataset
console
.
log
(
_data
)
const
index
=
_data
.
index
let
index
=
_data
.
index
const
json
=
this
.
tapParam
let
json
=
this
.
tapParam
const
i
=
_data
.
i
let
i
=
_data
.
i
json
[
i
].
selectIndex
=
index
json
[
i
].
selectIndex
=
index
// json[i].isShow = false
// json[i].isShow = false
le
t
param
=
{
cons
t
param
=
{
index
:
index
,
index
:
index
,
id
:
_data
.
val
id
:
_data
.
val
}
}
...
@@ -242,4 +241,4 @@ ul.course-list {
...
@@ -242,4 +241,4 @@ ul.course-list {
margin
:
0
;
margin
:
0
;
}
}
}
}
</
style
>
</
style
>
\ No newline at end of file
client/src/components/learnSysLayout/sidebar.vue
浏览文件 @
2e07d544
...
@@ -62,7 +62,7 @@ export default {
...
@@ -62,7 +62,7 @@ export default {
case
'/app/learn/report-active-list'
:
defaultActive
=
'1-3'
;
break
case
'/app/learn/report-active-list'
:
defaultActive
=
'1-3'
;
break
case
'/app/grade/credit'
:
defaultActive
=
'2-1'
;
break
case
'/app/grade/credit'
:
defaultActive
=
'2-1'
;
break
case
'/app/feedback/feedback-list'
:
defaultActive
=
'3'
;
break
case
'/app/feedback/feedback-list'
:
defaultActive
=
'3'
;
break
case
'/app/
service
-hall/hall'
:
defaultActive
=
'4'
;
break
case
'/app/
affairs
-hall/hall'
:
defaultActive
=
'4'
;
break
}
}
return
{
return
{
UserInfo
:
(
_global
&&
_global
.
UserInfo
)
||
{},
UserInfo
:
(
_global
&&
_global
.
UserInfo
)
||
{},
...
@@ -110,7 +110,7 @@ export default {
...
@@ -110,7 +110,7 @@ export default {
case
'1-3'
:
this
.
$router
.
push
({
path
:
'/app/learn/report-active-list'
});
break
case
'1-3'
:
this
.
$router
.
push
({
path
:
'/app/learn/report-active-list'
});
break
case
'2-1'
:
this
.
$router
.
push
({
path
:
'/app/grade/credit'
});
break
case
'2-1'
:
this
.
$router
.
push
({
path
:
'/app/grade/credit'
});
break
case
'3'
:
this
.
$router
.
push
({
path
:
'/app/feedback/feedback-list'
});
break
case
'3'
:
this
.
$router
.
push
({
path
:
'/app/feedback/feedback-list'
});
break
case
'4'
:
this
.
$router
.
push
({
path
:
'/app/
service
-hall/hall'
});
break
case
'4'
:
this
.
$router
.
push
({
path
:
'/app/
affairs
-hall/hall'
});
break
}
}
},
},
/* 修改头像 - 跳转方法 */
/* 修改头像 - 跳转方法 */
...
...
client/src/pages/affairsHall/againAdd.vue
0 → 100644
浏览文件 @
2e07d544
<
template
>
<div>
<div
class=
"con-title"
>
重修申请
</div>
<div
class=
"con-box"
>
<el-button
type=
"text"
@
click=
'gobackActiveList'
>
返回列表
</el-button>
<el-row
type=
"flex"
justify=
"center"
>
<el-col
:xs=
"24"
:sm=
"24"
:md=
"16"
:lg=
"12"
:xl=
"8"
>
<el-form
ref=
"setApplyForm"
:label-width=
"labelWidth"
:model=
"setApply"
:rules=
"applyRules"
>
<el-form-item
label=
"姓名"
prop=
"personal_name"
>
<el-input
v-model=
"setApply.personal_name"
placeholder=
"请输入您的姓名"
type=
"text"
/>
</el-form-item>
<el-form-item
label=
"班级"
prop=
"class_name"
>
<el-input
v-model=
"setApply.class_name"
placeholder=
"请输入您的班级"
type=
"text"
/>
</el-form-item>
<el-form-item
label=
"挂科学期"
prop=
"semester_name"
>
<el-input
v-model=
"setApply.semester_name"
placeholder=
"请输入您的挂科学期"
type=
"text"
/>
</el-form-item>
<el-form-item
label=
"重修课程"
prop=
"course_name"
>
<el-input
v-model=
"setApply.course_name"
placeholder=
"请输入您的重修课程名称"
type=
"text"
/>
</el-form-item>
<el-form-item
label=
"上传缴费凭证"
prop=
"file"
>
<el-upload
ref=
"upFile"
class=
"upload-demo"
list-type=
"picture-card"
action=
""
:multiple=
"false"
:limit=
"1"
:on-change=
"handleChange"
:http-request=
"uploadFile"
:file-list=
"filesArr"
>
<el-button
size=
"small"
type=
"primary"
>
点击上传
</el-button>
<div
slot=
"tip"
class=
"el-upload__tip"
>
长传图片.jpg,.jpeg,.png
</div>
</el-upload>
<el-dialog
:visible
.
sync=
"dialogVisible"
>
<img
width=
"100%"
:src=
"dialogImageUrl"
alt=
""
>
</el-dialog>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"onApplyFrom"
>
保存并提交
</el-button>
</el-form-item>
</el-form>
</el-col>
</el-row>
</div>
</div>
</
template
>
<
script
>
import
cAction
from
'@action'
export
default
{
props
:
{
rid
:
{
type
:
String
,
required
:
false
}
},
components
:
{},
data
()
{
return
{
labelWidth
:
'110px'
,
setApply
:
{
personal_name
:
''
,
class_name
:
''
,
semester_name
:
''
,
course_name
:
''
},
applyRules
:
{
personal_name
:
[
{
required
:
true
,
message
:
'请输入您的姓名'
,
trigger
:
'blur'
}
],
class_name
:
[
{
required
:
true
,
message
:
'请输入您的班级'
,
trigger
:
'blur'
}
],
semester_name
:
[
{
required
:
true
,
message
:
'请输入您的挂科学期'
,
trigger
:
'blur'
}
],
course_name
:
[
{
required
:
true
,
message
:
'请输入您的重修课程名称'
,
trigger
:
'blur'
}
]
},
successFileUrl
:
''
,
filesArr
:
[],
file
:
{
id
:
'WU_FILE_0'
,
name
:
''
,
type
:
''
,
lastModifiedDate
:
''
,
size
:
''
,
file
:
''
},
dialogImageUrl
:
''
,
dialogVisible
:
false
}
},
created
()
{
this
.
affair_id
=
this
.
$route
.
query
.
id
},
mounted
()
{
if
(
this
.
rid
!==
'-1'
)
{
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
''
,
spinner
:
''
,
background
:
'rgba(255, 255, 255, 0.9)'
})
cAction
.
reportAction
.
getReportActive
(
this
.
rid
).
then
(
data
=>
{
if
(
data
.
symposium_name
)
{
this
.
setApply
.
name
=
data
.
symposium_name
this
.
setApply
.
time
=
data
.
symposium_time
this
.
setApply
.
author
=
data
.
symposium_lecturer
this
.
setApply
.
address
=
data
.
symposium_address
this
.
setApply
.
content
=
data
.
symposium_contents
this
.
successFileUrl
=
data
.
symposium_attachments
}
}).
catch
(
e
=>
{
this
.
$message
.
error
(
e
.
message
)
}).
finally
(()
=>
{
loading
.
close
()
})
}
window
.
addEventListener
(
'resize'
,
()
=>
{
const
width
=
document
.
documentElement
.
clientWidth
if
(
width
<
790
)
{
this
.
labelWidth
=
'auto'
}
else
{
this
.
labelWidth
=
'110px'
}
})
},
methods
:
{
handleChange
(
file
,
filelist
)
{
this
.
file
.
name
=
file
.
raw
.
name
this
.
file
.
type
=
file
.
raw
.
type
this
.
file
.
lastModifiedDate
=
file
.
raw
.
lastModifiedDate
this
.
file
.
size
=
file
.
raw
.
size
this
.
file
.
file
=
file
.
raw
},
uploadFile
()
{
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
''
,
spinner
:
''
,
background
:
'rgba(255, 255, 255, 0.9)'
})
cAction
.
reportAction
.
uploadFile
(
this
.
file
).
then
(
data
=>
{
this
.
successFileUrl
=
data
.
url
// this.filesArr.pop()
}).
catch
(
e
=>
{
this
.
filesArr
.
pop
();
this
.
$message
.
error
(
e
.
message
)
}).
finally
(()
=>
{
loading
.
close
()
})
},
handlePictureCardPreview
(
file
)
{
this
.
dialogImageUrl
=
file
.
url
this
.
dialogVisible
=
true
},
gobackActiveList
()
{
this
.
$router
.
push
({
path
:
'/app/service-hall/hall'
})
},
onApplyFrom
()
{
this
.
$refs
.
setApplyForm
.
validate
((
valid
)
=>
{
if
(
valid
)
{
if
(
!
this
.
successFileUrl
)
{
this
.
$message
.
error
(
'请上传缴费凭证'
)
return
// this.$refs['setApplyForm'].resetFields()
}
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
''
,
spinner
:
''
,
background
:
'rgba(255, 255, 255, 0.9)'
})
let
reportActive
=
null
if
(
this
.
rid
!==
'-1'
)
{
/* 修改 */
reportActive
=
cAction
.
reportAction
.
submitLearning
(
this
.
rid
,
{
symposium_name
:
this
.
setApply
.
name
,
symposium_time
:
this
.
setApply
.
time
,
symposium_lecturer
:
this
.
setApply
.
author
,
symposium_address
:
this
.
setApply
.
address
,
symposium_contents
:
this
.
setApply
.
content
,
symposium_attachments
:
this
.
successFileUrl
})
}
else
{
/* 新建 */
reportActive
=
cAction
.
reportAction
.
submitLearning
({
affair_id
:
this
.
affair_id
,
personal_name
:
this
.
setApply
.
personal_name
,
class_name
:
this
.
setApply
.
class_name
,
semester_name
:
this
.
setApply
.
semester_name
,
course_name
:
this
.
setApply
.
course_name
,
payment_instrument
:
this
.
successFileUrl
})
}
reportActive
.
then
(
data
=>
{
if
(
data
.
success
)
{
this
.
$message
({
type
:
'success'
,
message
:
'提交成功'
})
setTimeout
(()
=>
{
this
.
$router
.
push
({
path
:
'/app/service-hall/hall'
})
},
500
)
}
}).
catch
(
e
=>
{
this
.
filesArr
.
pop
();
this
.
$message
.
error
(
e
.
message
)
}).
finally
(()
=>
{
loading
.
close
()
})
}
else
{
this
.
$message
.
error
(
'请检查输入项,确认无误后,重新提交'
)
return
false
}
})
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
/* 申请 */
.el-date-editor.el-input
{
width
:
100%
;
}
.el-upload__tip
{
line-height
:
1
.5
;
}
</
style
>
client/src/pages/affairsHall/hall.vue
0 → 100644
浏览文件 @
2e07d544
<
template
>
<div>
<div
class=
"con-title"
>
<div>
办事大厅
</div>
<div
@
click=
"goMyApply"
>
我的申请
</div>
</div>
<Tap
:tapParam=
'tapParam'
@
tapParam=
'tapIndexs'
></Tap>
<div
class=
"con-box"
>
<el-button
type=
"primary"
v-show=
"tapIndex==0"
@
click=
"golearningAdd(0)"
>
申请新的活动
</el-button>
<el-button
type=
"primary"
v-show=
"tapIndex==1"
@
click=
"golearningAdd(1)"
>
申请新乐分享
</el-button>
<el-button
type=
"primary"
v-show=
"tapIndex==2"
@
click=
"golearningAdd(2)"
>
申请重修
</el-button>
<!--
<el-button
style=
"float:right;"
type=
"text"
@
click=
'gobackReportList'
>
返回报告列表
</el-button>
-->
<div
style=
"width: 100%; height: 0.2rem;"
></div>
<template
v-if=
"ismPageFlag"
>
<m-page
:tableHead=
"tableHead"
:tableData=
"tableData"
:params=
"params"
:objFn=
"objFn"
:tableConfig=
"tableConfig"
/>
</
template
>
</div>
</div>
</template>
<
script
>
import
Tap
from
'../../components/comTable/tap.vue'
import
mPage
from
'../../components/comTable/mPage.vue'
import
cAction
from
'@action'
export
default
{
components
:
{
Tap
,
mPage
},
data
()
{
return
{
ismPageFlag
:
false
,
tapIndex
:
0
,
// tap切换
tapParam
:
[{
name
:
'分类'
,
isShow
:
false
,
selectIndex
:
0
,
key
:
'cc'
,
arrItem
:
[
// { val: '1', name: '学术活动' },
// { val: '2', name: '乐分享' },
// { val: '3', name: '重修' }
]
}],
// 学术活动
tableConfig
:
{
border
:
''
,
size
:
''
,
selection
:
{
has
:
false
,
sels
:
[],
width
:
'50px'
,
fix
:
'left'
,
align
:
''
}
},
// 增加选择框,has设置为true
tableHead
:
[],
tableData
:
[],
dataParam
:
1
,
params
:
{},
// params: { keywords: '', curPage: 1, pageSize: 5, total: '' },
objFn
:
{}
// 音分享
}
},
beforeDestroy
()
{
this
.
VueEvent
.
$off
(
'command-tablelist-x'
)
},
mounted
()
{
this
.
getTapData
()
this
.
VueEvent
.
$on
(
'command-tablelist-x'
,
(
_obj
)
=>
{
if
(
_obj
.
command
.
command
===
'activelist-show'
)
{
const
rid
=
_obj
.
tableData
[
_obj
.
index
-
1
].
id
this
.
$router
.
push
({
path
:
`/app/service-hall/view-report/
${
rid
}
`
})
}
if
(
_obj
.
command
.
command
===
'activereport-add'
)
{
const
syid
=
_obj
.
tableData
[
_obj
.
index
-
1
].
formId
this
.
$router
.
push
({
path
:
`/app/service-hall/upload-report/
${
syid
}
/-1`
})
}
if
(
_obj
.
command
.
command
===
'activelist-edit'
)
{
const
rid
=
_obj
.
tableData
[
_obj
.
index
-
1
].
id
this
.
$router
.
push
({
path
:
`/app/service-hall/learning-add/
${
rid
}
`
,
query
:
{
id
:
this
.
tapParam
[
0
].
arrItem
[
this
.
tapIndex
].
val
}
})
}
if
(
_obj
.
command
.
command
===
'activelist-delete'
)
{
const
rid
=
_obj
.
tableData
[
_obj
.
index
-
1
].
id
/* 删除 */
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
''
,
spinner
:
''
,
background
:
'rgba(255, 255, 255, 0.9)'
})
cAction
.
reportAction
.
deleteAffairs
(
rid
).
then
(
data
=>
{
if
(
data
.
success
)
{
this
.
$message
({
type
:
'success'
,
message
:
'删除成功'
})
this
.
setmPage
()
}
}).
catch
(
e
=>
{
this
.
$message
.
error
(
e
.
message
)
}).
finally
(()
=>
{
loading
.
close
()
})
}
})
},
methods
:
{
setmPage
()
{
this
.
objFn
=
{
paramsFn
:
(
_this
)
=>
{
return
{
affair_id
:
this
.
dataParam
}
},
nameAPI
:
'getAffairsData'
,
actionClass
:
'reportAction'
,
// nameExcel: 'getStatSummaryExcel',
nameExcel
:
'getExportExcel3_4_14'
,
callback
:
(
_this
,
data
)
=>
{
// _this.params.total = data.length
data
.
forEach
((
elem
,
i
)
=>
{
const
datas
=
{}
datas
.
approve_status
=
'未通过'
datas
.
approve_status
=
elem
.
status
=
elem
.
status
===
1
||
elem
.
status
===
2
||
elem
.
status
===
4
?
'通过'
:
(
elem
.
status
===
0
||
elem
.
status
===
3
?
'未通过'
:
'未审核'
)
// 0 未通过;1 通过;2 未审核
// datas.index = elem.index = i + 1 + (_this.params.curPage - 1) * _this.params.pageSize
datas
.
index
=
i
+
1
datas
.
approve_time
=
elem
.
apply_time
datas
.
isPage
=
0
if
(
parseInt
(
this
.
tapIndex
)
===
0
)
{
datas
.
symposium_attachments
=
elem
.
form
.
symposium_attachments
// datas.approve_status = elem.approve_status = elem.approve_status === 1 ? '通过' : (elem.approve_status === 0 ? '未通过' : '未审核') // 0 未通过;1 通过;2 未审核
// datas.index = elem.index = i + 1 + (_this.params.curPage - 1) * _this.params.pageSize
// datas.reportscount = elem.reportscount = Number(elem.reportscount || '0')
datas
.
symposium_name
=
elem
.
form
.
symposium_name
datas
.
symposium_time
=
elem
.
form
.
symposium_time
datas
.
symposium_lecturer
=
elem
.
form
.
symposium_lecturer
datas
.
id
=
elem
.
id
datas
.
formId
=
elem
.
form
.
id
}
else
if
(
parseInt
(
this
.
tapIndex
)
===
1
)
{
datas
.
personal_name
=
elem
.
form
.
personal_name
datas
.
trade_name
=
elem
.
form
.
trade_name
datas
.
age
=
elem
.
form
.
age
datas
.
class_name
=
elem
.
form
.
class_name
datas
.
telephone
=
elem
.
form
.
telephone
datas
.
sharing_theme
=
elem
.
form
.
sharing_theme
datas
.
remark1
=
elem
.
remark1
}
else
{
datas
.
personal_name
=
elem
.
form
.
personal_name
datas
.
payment_instrument
=
elem
.
form
.
payment_instrument
datas
.
semester_name
=
elem
.
form
.
semester_name
datas
.
class_name
=
elem
.
form
.
class_name
datas
.
course_name
=
elem
.
form
.
course_name
datas
.
remark1
=
elem
.
remark1
}
_this
.
tableData
.
push
(
datas
)
})
}
}
this
.
ismPageFlag
=
true
},
tapIndexs
(
data
)
{
this
.
tapIndex
=
data
.
index
this
.
getData
(
data
)
},
getData
(
data
)
{
const
n
=
parseInt
(
data
.
index
)
this
.
dataParam
=
data
.
id
switch
(
n
)
{
case
0
:
this
.
tableHead
=
[
{
prop
:
'index'
,
label
:
'序号'
,
minWidth
:
'80'
,
fix
:
false
},
{
prop
:
'symposium_name'
,
label
:
'活动名称'
,
minWidth
:
'150'
,
fix
:
false
},
{
prop
:
'symposium_time'
,
label
:
'活动时间'
,
minWidth
:
'120'
,
fix
:
false
},
{
prop
:
'symposium_lecturer'
,
label
:
'主讲人'
,
minWidth
:
'120'
,
fix
:
false
},
{
prop
:
'approve_status'
,
label
:
'审核状态'
,
minWidth
:
'80'
,
fix
:
false
},
{
prop
:
'approve_time'
,
label
:
'审核时间'
,
minWidth
:
'120'
,
fix
:
false
},
// { prop: '', label: '', minWidth: '', fix: false, goObj: { routerName: '', params: {} } }, // 点击跳转页面并传参数
{
prop
:
'operate-x'
,
label
:
'操作'
,
width
:
'200px'
,
fix
:
false
,
commandArr
:
"[ { command: 'activelist-show', name: '查看报告' }, { command: 'activereport-add', name: '上传报告' }, { command: 'activelist-edit', name: '编辑' }, { command: 'activelist-delete', name: '删除' } ]"
}
]
break
case
1
:
this
.
tableHead
=
[
{
prop
:
'index'
,
label
:
'序号'
,
minWidth
:
'80'
,
fix
:
true
},
{
prop
:
'sharing_theme'
,
label
:
'分享主题'
,
minWidth
:
'150'
,
fix
:
false
},
{
prop
:
'class_name'
,
label
:
'班级'
,
minWidth
:
'80'
,
fix
:
false
},
{
prop
:
'personal_name'
,
label
:
'申请人'
,
minWidth
:
'80'
,
fix
:
false
},
{
prop
:
'telephone'
,
label
:
'电话'
,
minWidth
:
'120'
,
fix
:
false
},
{
prop
:
'approve_status'
,
label
:
'审核状态'
,
minWidth
:
'80'
,
fix
:
false
},
{
prop
:
'approve_time'
,
label
:
'审核时间'
,
minWidth
:
'200'
,
fix
:
false
},
{
prop
:
'remark1'
,
label
:
'备注'
,
minWidth
:
'120'
,
fix
:
false
}
]
break
case
2
:
this
.
tableHead
=
[
{
prop
:
'index'
,
label
:
'序号'
,
minWidth
:
'80'
,
fix
:
false
},
{
prop
:
'semester_name'
,
label
:
'学期'
,
minWidth
:
'150'
,
fix
:
false
},
{
prop
:
'class_name'
,
label
:
'班级'
,
minWidth
:
'80'
,
fix
:
false
},
{
prop
:
'course_name'
,
label
:
'课程'
,
minWidth
:
'80'
,
fix
:
false
},
{
prop
:
'approve_status'
,
label
:
'审核状态'
,
minWidth
:
'80'
,
fix
:
false
},
{
prop
:
'approve_time'
,
label
:
'审核时间'
,
minWidth
:
'120'
,
fix
:
false
},
{
prop
:
'remark1'
,
label
:
'备注'
,
minWidth
:
'120'
,
fix
:
false
}
]
break
}
this
.
setmPage
()
},
getTapData
()
{
// 获取事务类型 tap切换
cAction
.
Affairs
.
getAffairsType
().
then
(
data
=>
{
for
(
let
i
=
0
;
i
<
data
.
length
;
i
++
)
{
this
.
tapParam
[
0
].
arrItem
.
push
(
{
val
:
data
[
i
].
id
,
name
:
data
[
i
].
affair_name
}
)
}
const
param
=
{
id
:
this
.
tapParam
[
0
].
arrItem
[
0
].
val
,
index
:
0
}
this
.
getData
(
param
)
}).
catch
(
e
=>
{
this
.
$message
.
error
(
e
.
message
)
})
},
golearningAdd
(
n
)
{
if
(
n
===
0
)
{
this
.
$router
.
push
({
path
:
'/app/service-hall/learning-add/-1'
,
query
:
{
id
:
this
.
tapParam
[
0
].
arrItem
[
this
.
tapIndex
].
val
}
})
}
else
if
(
n
===
1
)
{
this
.
$router
.
push
({
path
:
'/app/service-hall/share-add/-1'
,
query
:
{
id
:
this
.
tapParam
[
0
].
arrItem
[
this
.
tapIndex
].
val
}
})
}
else
{
this
.
$router
.
push
({
path
:
'/app/service-hall/again-add/-1'
,
query
:
{
id
:
this
.
tapParam
[
0
].
arrItem
[
this
.
tapIndex
].
val
}
})
}
},
goMyApply
()
{
this
.
$router
.
push
({
path
:
'/app/service-hall/my-apply'
,
query
:
{
id1
:
this
.
tapParam
[
0
].
arrItem
[
0
].
val
,
id2
:
this
.
tapParam
[
0
].
arrItem
[
1
].
val
,
id3
:
this
.
tapParam
[
0
].
arrItem
[
2
].
val
}
})
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.con-title
{
display
:
flex
;
justify-content
:space-between
}
</
style
>
client/src/pages/affairsHall/learningAdd.vue
0 → 100644
浏览文件 @
2e07d544
<
template
>
<div>
<div
class=
"con-title"
>
学术活动申请
</div>
<div
class=
"con-box"
>
<el-button
type=
"text"
@
click=
'gobackActiveList'
>
返回列表
</el-button>
<el-row
type=
"flex"
justify=
"center"
>
<el-col
:xs=
"24"
:sm=
"24"
:md=
"16"
:lg=
"12"
:xl=
"8"
>
<el-form
ref=
"setApplyForm"
:label-width=
"labelWidth"
:model=
"setApply"
:rules=
"applyRules"
>
<!--
<el-form-item
label=
"姓名"
prop=
"personal_name"
>
<el-input
v-model=
"setApply.personal_name"
placeholder=
"请输入您的姓名"
type=
"text"
/>
</el-form-item>
<el-form-item
label=
"班级"
prop=
"class_name"
>
<el-input
v-model=
"setApply.class_name"
placeholder=
"请输入您的班级"
type=
"text"
/>
</el-form-item>
-->
<el-form-item
label=
"学术活动名称"
prop=
"name"
>
<el-input
v-model=
"setApply.name"
placeholder=
"请输入活动名称"
type=
"text"
/>
</el-form-item>
<el-form-item
label=
"学术活动时间"
prop=
"time"
>
<el-date-picker
v-model=
"setApply.time"
value-format=
"yyyy-MM-dd HH:mm:ss"
placeholder=
"选择日期时间"
type=
"datetime"
/>
</el-form-item>
<el-form-item
label=
"主 讲 人"
prop=
"author"
>
<el-input
v-model=
"setApply.author"
placeholder=
"请输入主讲人"
type=
"text"
/>
</el-form-item>
<el-form-item
label=
"学术活动地址"
prop=
"address"
>
<el-input
v-model=
"setApply.address"
placeholder=
"请输入活动地址"
type=
"text"
/>
</el-form-item>
<el-form-item
label=
"学术活动内容"
prop=
"content"
>
<el-input
v-model=
"setApply.content"
maxlength=
"50"
placeholder=
"请输入活动内容"
type=
"textarea"
:autosize=
"
{ minRows: 5 }" />
</el-form-item>
<!--
<el-form-item
label=
"附 件"
prop=
"file"
>
<el-upload
ref=
"upFile"
class=
"upload-demo"
action=
""
:multiple=
"false"
:limit=
"1"
:show-file-list=
"false"
:on-change=
"handleChange"
:http-request=
"uploadFile"
:file-list=
"filesArr"
>
<el-button
size=
"small"
type=
"primary"
>
点击上传
</el-button>
<div
slot=
"tip"
class=
"el-upload__tip"
>
(可以上传 word、ppt、png、jpg、zip、rar等资源)
<a
href=
"http://zws-imgs-pub.oss-cn-beijing.aliyuncs.com/static/build/learn-mba/%E3%80%8AMBA%E5%AD%A6%E7%94%9F%E5%AD%A6%E6%9C%AF%E6%B4%BB%E5%8A%A8%E7%94%B3%E8%AF%B7%E6%8A%A5%E5%91%8A%E3%80%8B%E6%A8%A1%E6%9D%BFXXX%E5%AD%A6%E7%94%9F.docx"
>
模板下载
</a></div>
<template
v-if=
"successFileUrl"
>
{{
successFileUrl
.
replace
(
/.*
\/([^\/]
*
\.[^
.
]
+
)
$/gi
,
'$1'
)
}}
</
template
>
</el-upload>
<
template
v-if=
"successFileUrl"
>
<a
:href=
"successFileUrl"
>
下载已上传附件
</a>
</
template
>
</el-form-item>
-->
<el-form-item>
<el-button
type=
"primary"
@
click=
"onApplyFrom"
>
保存并提交
</el-button>
</el-form-item>
</el-form>
</el-col>
</el-row>
</div>
</div>
</template>
<
script
>
import
cAction
from
'@action'
export
default
{
props
:
{
rid
:
{
type
:
String
,
required
:
false
}
},
components
:
{},
data
()
{
return
{
labelWidth
:
'110px'
,
setApply
:
{
personal_name
:
''
,
class_name
:
''
,
name
:
''
,
time
:
''
,
author
:
''
,
address
:
''
,
content
:
''
,
affair_id
:
''
},
applyRules
:
{
personal_name
:
[
{
required
:
true
,
message
:
'请输入您的姓名'
,
trigger
:
'blur'
}
],
class_name
:
[
{
required
:
true
,
message
:
'请输入您的班级'
,
trigger
:
'blur'
}
],
name
:
[
{
required
:
true
,
message
:
'活动名称不能为空'
,
trigger
:
'blur'
}
],
time
:
[
{
required
:
true
,
message
:
'活动时间不能为空'
,
trigger
:
'blur'
}
],
author
:
[
{
required
:
true
,
message
:
'主讲人不能为空'
,
trigger
:
'blur'
}
],
address
:
[
{
required
:
true
,
message
:
'学术活动地址不能为空'
,
trigger
:
'blur'
}
],
content
:
[
{
required
:
true
,
message
:
'活动内容不能为空'
,
trigger
:
'blur'
}
]
},
successFileUrl
:
''
,
filesArr
:
[],
file
:
{
id
:
'WU_FILE_0'
,
name
:
''
,
type
:
''
,
lastModifiedDate
:
''
,
size
:
''
,
file
:
''
}
}
},
mounted
()
{
this
.
affair_id
=
this
.
$route
.
query
.
id
console
.
log
(
'------'
,
this
.
affair_id
)
if
(
this
.
rid
!==
'-1'
)
{
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
''
,
spinner
:
''
,
background
:
'rgba(255, 255, 255, 0.9)'
})
cAction
.
reportAction
.
getAffairsDetails
(
this
.
rid
).
then
(
data
=>
{
console
.
log
(
data
)
if
(
data
.
form
.
symposium_name
)
{
this
.
setApply
.
personal_name
=
data
.
form
.
personal_name
this
.
setApply
.
class_name
=
data
.
form
.
class_name
this
.
setApply
.
name
=
data
.
form
.
symposium_name
this
.
setApply
.
time
=
data
.
form
.
symposium_time
this
.
setApply
.
author
=
data
.
form
.
symposium_lecturer
this
.
setApply
.
address
=
data
.
form
.
symposium_address
this
.
setApply
.
content
=
data
.
form
.
symposium_contents
}
}).
catch
(
e
=>
{
this
.
$message
.
error
(
e
.
message
)
}).
finally
(()
=>
{
loading
.
close
()
})
}
window
.
addEventListener
(
'resize'
,
()
=>
{
const
width
=
document
.
documentElement
.
clientWidth
if
(
width
<
790
)
{
this
.
labelWidth
=
'auto'
}
else
{
this
.
labelWidth
=
'110px'
}
})
},
methods
:
{
handleChange
(
file
,
filelist
)
{
this
.
file
.
name
=
file
.
raw
.
name
this
.
file
.
type
=
file
.
raw
.
type
this
.
file
.
lastModifiedDate
=
file
.
raw
.
lastModifiedDate
this
.
file
.
size
=
file
.
raw
.
size
this
.
file
.
file
=
file
.
raw
},
uploadFile
()
{
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
''
,
spinner
:
''
,
background
:
'rgba(255, 255, 255, 0.9)'
})
cAction
.
chapterAction
.
uploadFile
(
this
.
file
).
then
(
data
=>
{
this
.
successFileUrl
=
data
.
url
this
.
filesArr
.
pop
()
}).
catch
(
e
=>
{
this
.
filesArr
.
pop
();
this
.
$message
.
error
(
e
.
message
)
}).
finally
(()
=>
{
loading
.
close
()
})
},
gobackActiveList
()
{
this
.
$router
.
push
({
path
:
'/app/service-hall/hall'
})
},
onApplyFrom
()
{
this
.
$refs
.
setApplyForm
.
validate
((
valid
)
=>
{
if
(
valid
)
{
// if (!this.successFileUrl) {
// this.$message.error('请上传附件')
// return
// // this.$refs['setApplyForm'].resetFields()
// }
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
''
,
spinner
:
''
,
background
:
'rgba(255, 255, 255, 0.9)'
})
let
reportActive
=
null
if
(
this
.
rid
!==
'-1'
)
{
/* 修改 */
reportActive
=
cAction
.
reportAction
.
updateAffairs
(
this
.
rid
,
{
affair_id
:
this
.
affair_id
,
personal_name
:
this
.
setApply
.
personal_name
,
class_name
:
this
.
setApply
.
class_name
,
symposium_name
:
this
.
setApply
.
name
,
symposium_time
:
this
.
setApply
.
time
,
symposium_lecturer
:
this
.
setApply
.
author
,
symposium_address
:
this
.
setApply
.
address
,
symposium_contents
:
this
.
setApply
.
content
,
symposium_attachments
:
this
.
successFileUrl
})
}
else
{
/* 新建 */
reportActive
=
cAction
.
reportAction
.
submitLearning
({
affair_id
:
this
.
affair_id
,
personal_name
:
this
.
setApply
.
personal_name
,
class_name
:
this
.
setApply
.
class_name
,
symposium_name
:
this
.
setApply
.
name
,
symposium_time
:
this
.
setApply
.
time
,
symposium_lecturer
:
this
.
setApply
.
author
,
symposium_address
:
this
.
setApply
.
address
,
symposium_contents
:
this
.
setApply
.
content
,
symposium_attachments
:
this
.
successFileUrl
})
}
reportActive
.
then
(
data
=>
{
if
(
data
.
success
)
{
this
.
$message
({
type
:
'success'
,
message
:
'提交成功'
})
setTimeout
(()
=>
{
this
.
$router
.
push
({
path
:
'/app/service-hall/hall'
})
},
500
)
}
}).
catch
(
e
=>
{
this
.
filesArr
.
pop
();
this
.
$message
.
error
(
e
.
message
)
}).
finally
(()
=>
{
loading
.
close
()
})
}
else
{
this
.
$message
.
error
(
'请检查输入项,确认无误后,重新提交'
)
return
false
}
})
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
/* 申请 */
.el-date-editor.el-input
{
width
:
100%
;
}
.el-upload__tip
{
line-height
:
1
.5
;
}
</
style
>
client/src/pages/affairsHall/myApply.vue
0 → 100644
浏览文件 @
2e07d544
<
template
>
<div
class=
"con-boxs"
>
<el-form
:inline=
"true"
:model=
"formInline"
class=
"demo-form-inline"
>
<el-form-item>
<el-select
v-model=
"selsectValue"
clearable
placeholder=
"请选择"
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"onSubmit"
>
查询
</el-button>
</el-form-item>
</el-form>
<el-card
class=
"box-card"
shadow=
"never"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
进行中的
</span>
</div>
<template>
<el-table
:data=
"unfinishedCount"
style=
"width: 100%"
>
<el-table-column
prop=
"index"
label=
"序号"
>
</el-table-column>
<el-table-column
prop=
"name"
label=
"事项"
>
</el-table-column>
<el-table-column
prop=
"personal_name"
label=
"提交人"
>
</el-table-column>
<el-table-column
prop=
"class_name"
label=
"提交人班级"
>
</el-table-column>
<el-table-column
prop=
"apply_time"
label=
"提交时间"
>
</el-table-column>
<el-table-column
prop=
"status"
label=
"审批结果"
>
</el-table-column>
<el-table-column
prop=
"approve_time1"
label=
"审批时间"
>
</el-table-column>
</el-table>
</
template
>
</el-card>
<el-card
class=
"box-card cardmar"
shadow=
"never"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
已完成
</span>
</div>
<
template
>
<el-table
:data=
"finishedCount"
style=
"width: 100%"
>
<el-table-column
prop=
"index"
label=
"序号"
>
</el-table-column>
<el-table-column
prop=
"name"
label=
"事项"
>
</el-table-column>
<el-table-column
prop=
"personal_name"
label=
"提交人"
>
</el-table-column>
<el-table-column
prop=
"class_name"
label=
"提交人班级"
>
</el-table-column>
<el-table-column
prop=
"apply_time"
label=
"提交时间"
>
</el-table-column>
<el-table-column
prop=
"status"
label=
"审批结果"
>
</el-table-column>
<el-table-column
prop=
"approve_time1"
label=
"审批时间"
>
</el-table-column>
</el-table>
</
template
>
</el-card>
</div>
</template>
<
script
>
import
cAction
from
'@action'
export
default
{
data
()
{
return
{
selsectValue
:
''
,
options
:
[],
formInline
:
{
user
:
''
,
region
:
''
},
tableData
:
[{
date
:
'2016-05-02'
,
name
:
'王小虎'
,
address
:
'上海市普陀区金沙江路 1518 弄'
},
{
date
:
'2016-05-04'
,
name
:
'王小虎'
,
address
:
'上海市普陀区金沙江路 1517 弄'
}],
unfinishedCount
:
[],
finishedCount
:
[]
}
},
created
()
{
// this.getInfo()
this
.
getSelect
()
this
.
onSubmit
()
},
methods
:
{
getSelect
()
{
cAction
.
reportAction
.
getAffairsType
().
then
(
data
=>
{
for
(
let
i
=
0
;
i
<
data
.
length
;
i
++
)
{
this
.
options
.
push
({
label
:
data
[
i
].
affair_name
,
value
:
data
[
i
].
id
})
}
}).
catch
(
e
=>
{
this
.
$message
.
error
(
e
.
message
)
})
},
onSubmit
()
{
cAction
.
reportAction
.
getAffairsData
({
affair_id
:
this
.
selsectValue
}).
then
(
data
=>
{
this
.
unfinishedCount
=
[]
this
.
finishedCount
=
[]
let
num1
=
0
let
num2
=
0
for
(
let
i
=
0
;
i
<
data
.
length
;
i
++
)
{
if
(
data
[
i
].
status
===
-
1
)
{
data
[
i
].
status
=
'未审核'
num1
++
data
[
i
].
index
=
parseInt
(
num1
)
data
[
i
].
personal_name
=
data
[
i
].
form
.
personal_name
data
[
i
].
class_name
=
data
[
i
].
form
.
class_name
data
[
i
].
name
=
this
.
screenId
(
data
[
i
].
affair_id
)
this
.
unfinishedCount
.
push
(
data
[
i
])
}
else
{
num2
++
data
[
i
].
index
=
parseInt
(
num2
)
data
[
i
].
status
=
data
[
i
].
status
===
1
||
data
[
i
].
status
===
2
?
'通过'
:
'未通过'
data
[
i
].
personal_name
=
data
[
i
].
form
.
personal_name
data
[
i
].
class_name
=
data
[
i
].
form
.
class_name
data
[
i
].
name
=
this
.
screenId
(
data
[
i
].
affair_id
)
this
.
finishedCount
.
push
(
data
[
i
])
}
}
}).
catch
(
e
=>
{
this
.
$message
.
error
(
e
.
message
)
})
},
screenId
(
id
)
{
for
(
let
i
=
0
;
i
<
this
.
options
.
length
;
i
++
)
{
if
(
this
.
options
[
i
].
value
===
id
)
{
return
this
.
options
[
i
].
label
}
}
return
false
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.con-boxs
{
margin
:
0
.3rem
;
padding
:
0
.3rem
0
.3rem
0
.15rem
0
.3rem
;
background
:
#ffffff
;
overflow
:
hidden
;
position
:
relative
;
.min-title
{
line-height
:
30px
;
margin-top
:
20px
;
}
.cardmar
{
margin-top
:
20px
;
}
}
</
style
>
client/src/pages/affairsHall/shareAdd.vue
0 → 100644
浏览文件 @
2e07d544
<
template
>
<div>
<div
class=
"con-title"
>
乐分享申请
</div>
<div
class=
"con-box"
>
<el-button
type=
"text"
@
click=
'gobackActiveList'
>
返回列表
</el-button>
<el-row
type=
"flex"
justify=
"center"
>
<el-col
:xs=
"24"
:sm=
"24"
:md=
"16"
:lg=
"12"
:xl=
"8"
>
<el-form
ref=
"setApplyForm"
:label-width=
"labelWidth"
:model=
"setApply"
:rules=
"applyRules"
>
<el-form-item
label=
"姓名"
prop=
"personal_name"
>
<el-input
v-model=
"setApply.personal_name"
placeholder=
"请输入您的姓名"
type=
"text"
/>
</el-form-item>
<el-form-item
label=
"行业"
prop=
"trade_name"
>
<el-input
v-model=
"setApply.trade_name"
placeholder=
"请输入您的行业"
type=
"text"
/>
</el-form-item>
<el-form-item
label=
"年龄"
prop=
"age"
>
<el-input
v-model=
"setApply.age"
placeholder=
"请输入您的年龄"
type=
"text"
/>
</el-form-item>
<el-form-item
label=
"班级"
prop=
"class_name"
>
<el-input
v-model=
"setApply.class_name"
placeholder=
"请输入您的班级"
type=
"text"
/>
</el-form-item>
<el-form-item
label=
"电话"
prop=
"telephone"
>
<el-input
v-model=
"setApply.telephone"
placeholder=
"请输入您的电话"
type=
"text"
/>
</el-form-item>
<el-form-item
label=
"分享主题"
prop=
"sharing_theme"
>
<el-input
v-model=
"setApply.sharing_theme"
placeholder=
"请输入分享主题"
type=
"text"
/>
</el-form-item>
<!--
<el-form-item
label=
"附 件"
prop=
"file"
>
<el-upload
ref=
"upFile"
class=
"upload-demo"
action=
""
:multiple=
"false"
:limit=
"1"
:show-file-list=
"false"
:on-change=
"handleChange"
:http-request=
"uploadFile"
:file-list=
"filesArr"
>
<el-button
size=
"small"
type=
"primary"
>
点击上传
</el-button>
<div
slot=
"tip"
class=
"el-upload__tip"
>
(可以上传 word、ppt、png、jpg、zip、rar等资源)
<a
href=
"http://zws-imgs-pub.oss-cn-beijing.aliyuncs.com/static/build/learn-mba/%E3%80%8AMBA%E5%AD%A6%E7%94%9F%E5%AD%A6%E6%9C%AF%E6%B4%BB%E5%8A%A8%E7%94%B3%E8%AF%B7%E6%8A%A5%E5%91%8A%E3%80%8B%E6%A8%A1%E6%9D%BFXXX%E5%AD%A6%E7%94%9F.docx"
>
模板下载
</a></div>
<template
v-if=
"successFileUrl"
>
{{
successFileUrl
.
replace
(
/.*
\/([^\/]
*
\.[^
.
]
+
)
$/gi
,
'$1'
)
}}
</
template
>
</el-upload>
<
template
v-if=
"successFileUrl"
>
<a
:href=
"successFileUrl"
>
下载已上传附件
</a>
</
template
>
</el-form-item>
-->
<el-form-item>
<el-button
type=
"primary"
@
click=
"onApplyFrom"
>
保存并提交
</el-button>
</el-form-item>
</el-form>
</el-col>
</el-row>
</div>
</div>
</template>
<
script
>
import
cAction
from
'@action'
export
default
{
props
:
{
rid
:
{
type
:
String
,
required
:
false
}
},
components
:
{},
data
()
{
return
{
labelWidth
:
'110px'
,
setApply
:
{
personal_name
:
''
,
trade_name
:
''
,
age
:
''
,
class_name
:
''
,
telephone
:
''
,
sharing_theme
:
''
,
affair_id
:
''
},
applyRules
:
{
personal_name
:
[
{
required
:
true
,
message
:
'请输入您的姓名'
,
trigger
:
'blur'
}
],
trade_name
:
[
{
required
:
true
,
message
:
'请输入您的行业'
,
trigger
:
'blur'
}
],
age
:
[
{
required
:
true
,
message
:
'请输入您的年龄'
,
trigger
:
'blur'
}
],
class_name
:
[
{
required
:
true
,
message
:
'请输入您的班级'
,
trigger
:
'blur'
}
],
telephone
:
[
{
required
:
true
,
message
:
'请输入您的电话'
,
trigger
:
'blur'
}
],
sharing_theme
:
[
{
required
:
true
,
message
:
'请输入分享主题'
,
trigger
:
'blur'
}
]
},
successFileUrl
:
''
,
filesArr
:
[],
file
:
{
id
:
'WU_FILE_0'
,
name
:
''
,
type
:
''
,
lastModifiedDate
:
''
,
size
:
''
,
file
:
''
}
}
},
created
()
{
this
.
affair_id
=
this
.
$route
.
query
.
id
},
mounted
()
{
if
(
this
.
rid
!==
'-1'
)
{
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
''
,
spinner
:
''
,
background
:
'rgba(255, 255, 255, 0.9)'
})
cAction
.
reportAction
.
getReportActive
(
this
.
rid
).
then
(
data
=>
{
if
(
data
.
symposium_name
)
{
this
.
setApply
.
name
=
data
.
symposium_name
this
.
setApply
.
time
=
data
.
symposium_time
this
.
setApply
.
author
=
data
.
symposium_lecturer
this
.
setApply
.
address
=
data
.
symposium_address
this
.
setApply
.
content
=
data
.
symposium_contents
this
.
successFileUrl
=
data
.
symposium_attachments
}
}).
catch
(
e
=>
{
this
.
$message
.
error
(
e
.
message
)
}).
finally
(()
=>
{
loading
.
close
()
})
}
window
.
addEventListener
(
'resize'
,
()
=>
{
const
width
=
document
.
documentElement
.
clientWidth
if
(
width
<
790
)
{
this
.
labelWidth
=
'auto'
}
else
{
this
.
labelWidth
=
'110px'
}
})
},
methods
:
{
handleChange
(
file
,
filelist
)
{
this
.
file
.
name
=
file
.
raw
.
name
this
.
file
.
type
=
file
.
raw
.
type
this
.
file
.
lastModifiedDate
=
file
.
raw
.
lastModifiedDate
this
.
file
.
size
=
file
.
raw
.
size
this
.
file
.
file
=
file
.
raw
},
uploadFile
()
{
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
''
,
spinner
:
''
,
background
:
'rgba(255, 255, 255, 0.9)'
})
cAction
.
chapterAction
.
uploadFile
(
this
.
file
).
then
(
data
=>
{
this
.
successFileUrl
=
data
.
url
this
.
filesArr
.
pop
()
}).
catch
(
e
=>
{
this
.
filesArr
.
pop
();
this
.
$message
.
error
(
e
.
message
)
}).
finally
(()
=>
{
loading
.
close
()
})
},
gobackActiveList
()
{
this
.
$router
.
push
({
path
:
'/app/service-hall/hall'
})
},
onApplyFrom
()
{
this
.
$refs
.
setApplyForm
.
validate
((
valid
)
=>
{
if
(
valid
)
{
// if (!this.successFileUrl) {
// this.$message.error('请上传附件')
// return
// // this.$refs['setApplyForm'].resetFields()
// }
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
''
,
spinner
:
''
,
background
:
'rgba(255, 255, 255, 0.9)'
})
let
reportActive
=
null
if
(
this
.
rid
!==
'-1'
)
{
/* 修改 */
reportActive
=
cAction
.
reportAction
.
submitLearning
(
this
.
rid
,
{
symposium_name
:
this
.
setApply
.
name
,
symposium_time
:
this
.
setApply
.
time
,
symposium_lecturer
:
this
.
setApply
.
author
,
symposium_address
:
this
.
setApply
.
address
,
symposium_contents
:
this
.
setApply
.
content
,
symposium_attachments
:
this
.
successFileUrl
})
}
else
{
/* 新建 */
reportActive
=
cAction
.
reportAction
.
submitLearning
({
affair_id
:
this
.
affair_id
,
personal_name
:
this
.
setApply
.
personal_name
,
trade_name
:
this
.
setApply
.
trade_name
,
age
:
this
.
setApply
.
age
,
class_name
:
this
.
setApply
.
class_name
,
telephone
:
this
.
setApply
.
telephone
,
sharing_theme
:
this
.
setApply
.
sharing_theme
})
}
reportActive
.
then
(
data
=>
{
if
(
data
.
success
)
{
this
.
$message
({
type
:
'success'
,
message
:
'提交成功'
})
setTimeout
(()
=>
{
this
.
$router
.
push
({
path
:
'/app/service-hall/hall'
})
},
500
)
}
}).
catch
(
e
=>
{
this
.
filesArr
.
pop
();
this
.
$message
.
error
(
e
.
message
)
}).
finally
(()
=>
{
loading
.
close
()
})
}
else
{
this
.
$message
.
error
(
'请检查输入项,确认无误后,重新提交'
)
return
false
}
})
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
/* 申请 */
.el-date-editor.el-input
{
width
:
100%
;
}
.el-upload__tip
{
line-height
:
1
.5
;
}
</
style
>
client/src/pages/affairsHall/uploadReport.vue
0 → 100644
浏览文件 @
2e07d544
<
template
>
<div>
<div
class=
"con-title"
>
学术报告提交
</div>
<div
class=
"con-box"
>
<el-button
type=
"text"
@
click=
'gobackActiveList'
>
返回活动列表
</el-button>
<el-row
type=
"flex"
justify=
"center"
>
<el-col
:xs=
"24"
:sm=
"24"
:md=
"16"
:lg=
"12"
:xl=
"8"
>
<el-form
ref=
"setSubmitForm"
:label-width=
"labelWidth"
:model=
"setSubmit"
:rules=
"submitRules"
>
<el-form-item
label=
"学术报告主题"
prop=
"name"
>
<el-input
v-model=
"setSubmit.name"
placeholder=
"请输入报告主题"
type=
"text"
/>
</el-form-item>
<el-form-item
label=
"学术报告摘要"
prop=
"title"
>
<el-input
v-model=
"setSubmit.title"
placeholder=
"请输入报告摘要"
type=
"text"
/>
</el-form-item>
<el-form-item
label=
"附 件"
prop=
"file"
>
<el-upload
ref=
"upFile"
class=
"upload-demo"
action=
""
:multiple=
"false"
:limit=
"1"
:show-file-list=
"false"
:on-change=
"handleChange"
:http-request=
"uploadFile"
:file-list=
"filesArr"
>
<el-button
size=
"small"
type=
"primary"
>
点击上传
</el-button>
<div
slot=
"tip"
class=
"el-upload__tip"
>
(可以上传word、ppt等资源。系统提供模板下载)
<a
href=
"http://zws-imgs-pub.oss-cn-beijing.aliyuncs.com/static/build/learn-mba/%E3%80%8AMBA%E5%AD%A6%E7%94%9F%E5%AD%A6%E6%9C%AF%E6%B4%BB%E5%8A%A8%E8%AE%B0%E5%BD%95%E6%8A%A5%E5%91%8A%E3%80%8B%E6%A8%A1%E6%9D%BFXXX%E5%AD%A6%E7%94%9F.docx"
>
模板下载
</a></div>
<template
v-if=
"successFileUrl"
>
{{
successFileUrl
.
replace
(
/.*
\/([^\/]
*
\.[^
.
]
+
)
$/gi
,
'$1'
)
}}
</
template
>
</el-upload>
<
template
v-if=
"successFileUrl"
>
<a
:href=
"successFileUrl"
>
下载已上传附件
</a>
</
template
>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"onSubmitFrom"
>
保存并提交
</el-button>
</el-form-item>
</el-form>
</el-col>
</el-row>
</div>
</div>
</template>
<
script
>
import
cAction
from
'@action'
export
default
{
props
:
{
rid
:
{
type
:
String
,
required
:
false
},
reid
:
{
type
:
String
,
required
:
false
}
},
components
:
{},
data
()
{
return
{
labelWidth
:
'110px'
,
setSubmit
:
{
name
:
''
,
title
:
''
},
submitRules
:
{
name
:
[
{
required
:
true
,
message
:
'报告主题不能为空'
,
trigger
:
'blur'
}
],
title
:
[]
},
successFileUrl
:
''
,
filesArr
:
[],
file
:
{
id
:
'WU_FILE_0'
,
name
:
''
,
type
:
''
,
lastModifiedDate
:
''
,
size
:
''
,
file
:
''
}
}
},
mounted
()
{
if
(
this
.
reid
!==
'-1'
)
{
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
''
,
spinner
:
''
,
background
:
'rgba(255, 255, 255, 0.9)'
})
cAction
.
reportAction
.
getSubmitReport
(
this
.
rid
,
this
.
reid
).
then
(
data
=>
{
if
(
data
.
report_name
)
{
this
.
setSubmit
.
name
=
data
.
report_name
this
.
setSubmit
.
title
=
data
.
report_description
this
.
successFileUrl
=
data
.
file_url
}
}).
catch
(
e
=>
{
this
.
$message
.
error
(
e
.
message
)
}).
finally
(()
=>
{
loading
.
close
()
})
}
window
.
addEventListener
(
'resize'
,
()
=>
{
const
width
=
document
.
documentElement
.
clientWidth
if
(
width
<
790
)
{
this
.
labelWidth
=
'auto'
}
else
{
this
.
labelWidth
=
'110px'
}
})
},
methods
:
{
handleChange
(
file
,
filelist
)
{
this
.
file
.
name
=
file
.
raw
.
name
this
.
file
.
type
=
file
.
raw
.
type
this
.
file
.
lastModifiedDate
=
file
.
raw
.
lastModifiedDate
this
.
file
.
size
=
file
.
raw
.
size
this
.
file
.
file
=
file
.
raw
},
uploadFile
()
{
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
''
,
spinner
:
''
,
background
:
'rgba(255, 255, 255, 0.9)'
})
cAction
.
chapterAction
.
uploadFile
(
this
.
file
).
then
(
data
=>
{
this
.
successFileUrl
=
data
.
url
this
.
filesArr
.
pop
()
}).
catch
(
e
=>
{
this
.
filesArr
.
pop
();
this
.
$message
.
error
(
e
.
message
)
}).
finally
(()
=>
{
loading
.
close
()
})
},
gobackActiveList
()
{
// this.$router.push({ path: `/app/my-learn/report-list-all/${this.rid}` })
this
.
$router
.
push
({
path
:
'/app/service-hall/hall'
})
},
onSubmitFrom
()
{
this
.
$refs
.
setSubmitForm
.
validate
((
valid
)
=>
{
if
(
valid
)
{
// if (!this.successFileUrl) {
// this.$message.error('请上传附件')
// return
// // this.$refs['setApplyForm'].resetFields()
// }
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
''
,
spinner
:
''
,
background
:
'rgba(255, 255, 255, 0.9)'
})
let
report
=
null
if
(
this
.
reid
!==
'-1'
)
{
/* 修改 */
report
=
cAction
.
reportAction
.
updateSubmitReport
(
this
.
rid
,
this
.
reid
,
{
report_name
:
this
.
setSubmit
.
name
,
report_description
:
this
.
setSubmit
.
title
,
file_url
:
JSON
.
stringify
([{
name
:
this
.
file
.
name
,
url
:
this
.
successFileUrl
}])
})
}
else
{
/* 新建 */
report
=
cAction
.
reportAction
.
submitReport
(
this
.
rid
,
{
report_name
:
this
.
setSubmit
.
name
,
report_description
:
this
.
setSubmit
.
title
,
file_url
:
JSON
.
stringify
([{
name
:
this
.
file
.
name
,
url
:
this
.
successFileUrl
}])
})
}
report
.
then
(
data
=>
{
if
(
data
.
flag
)
{
this
.
$message
({
type
:
'success'
,
message
:
'提交成功'
})
setTimeout
(()
=>
{
this
.
$router
.
push
({
path
:
`/app/my-learn/report-list-all/
${
this
.
rid
}
`
})
},
500
)
}
}).
catch
(
e
=>
{
this
.
filesArr
.
pop
();
this
.
$message
.
error
(
e
.
message
)
}).
finally
(()
=>
{
loading
.
close
()
})
}
else
{
this
.
$message
.
error
(
'请检查输入项,确认无误后,重新提交'
)
return
false
}
})
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
/* 申请 */
.el-date-editor.el-input
{
width
:
100%
;
}
.el-upload__tip
{
line-height
:
1
.5
;
}
</
style
>
client/src/pages/affairsHall/viewReport.vue
0 → 100644
浏览文件 @
2e07d544
<
template
>
<div>
<div
class=
"con-title"
>
学术报告所在活动列表
</div>
<div
class=
"con-box"
>
<!--
<el-button
type=
"primary"
@
click=
"goReportSubmit"
>
申请报告
</el-button>
-->
<el-button
type=
"text"
@
click=
'gobackReportActiveList'
>
返回活动列表
</el-button>
<div
style=
"width: 100%; height: 0.2rem;"
></div>
<m-page
:tableHead=
"tableHead"
:tableData=
"tableData"
:params=
"params"
:objFn=
"objFn"
:tableConfig=
"tableConfig"
/>
</div>
</div>
</
template
>
<
script
>
import
cAction
from
'@action'
import
mPage
from
'../../components/comTable/mPage.vue'
export
default
{
props
:
{
rid
:
{
type
:
String
,
required
:
true
}
},
components
:
{
mPage
},
data
()
{
return
{
tableConfig
:
{
border
:
''
,
size
:
''
,
selection
:
{
has
:
false
,
sels
:
[],
width
:
'50px'
,
fix
:
'left'
,
align
:
''
}
},
// 增加选择框,has设置为true
tableHead
:
[
{
prop
:
'index'
,
label
:
'序号'
,
minWidth
:
'80'
,
fix
:
false
},
{
prop
:
'report_name'
,
label
:
'报告名称'
,
minWidth
:
'150'
,
fix
:
false
},
{
prop
:
'report_description'
,
label
:
'报告摘要'
,
minWidth
:
'120'
,
fix
:
false
},
{
prop
:
'submit_time'
,
label
:
'提交时间'
,
minWidth
:
'120'
,
fix
:
false
},
{
prop
:
'approve_status'
,
label
:
'审核状态'
,
minWidth
:
'120'
,
fix
:
false
},
{
prop
:
'file_url'
,
label
:
'附件下载'
,
minWidth
:
'120'
,
fix
:
false
},
// { prop: '', label: '', minWidth: '', fix: false, goObj: { routerName: '', params: {} } }, // 点击跳转页面并传参数
{
prop
:
'operate-x'
,
label
:
'操作'
,
width
:
'140px'
,
fix
:
false
,
commandArr
:
"[ { command: 'reportlist-', name: '' }, { command: 'reportlist-edit', name: '编辑' }, { command: 'reportlist-delete', name: '删除' } ]"
}
],
tableData
:
[],
params
:
{
keywords
:
''
,
curPage
:
1
,
pageSize
:
100
,
total
:
''
},
objFn
:
{
paramsFn
:
(
_this
)
=>
{
return
{
rid
:
this
.
rid
}
},
nameAPI
:
'getReportListAll'
,
actionClass
:
'reportAction'
,
// nameExcel: 'getStatSummaryExcel',
nameExcel
:
'getExportExcel3_4_14'
,
callback
:
(
_this
,
data
)
=>
{
_this
.
params
.
total
=
100
data
.
forEach
((
elem
,
i
)
=>
{
elem
.
approve_status
=
elem
.
is_checked
===
1
?
'通过'
:
(
elem
.
is_checked
===
0
?
'未通过'
:
'未审核'
)
elem
.
file_url
=
JSON
.
parse
(
elem
.
file_url
)[
0
].
url
elem
.
index
=
i
+
1
+
(
_this
.
params
.
curPage
-
1
)
*
_this
.
params
.
pageSize
_this
.
tableData
.
push
(
elem
)
})
}
}
}
},
mounted
()
{
this
.
VueEvent
.
$on
(
'command-tablelist-x'
,
(
_obj
)
=>
{
if
(
_obj
.
command
.
command
===
'reportlist-edit'
)
{
const
reid
=
_obj
.
tableData
[
_obj
.
index
-
1
].
id
this
.
$router
.
push
({
path
:
`/app/my-learn/report-submit/
${
this
.
rid
}
/
${
reid
}
`
})
}
if
(
_obj
.
command
.
command
===
'reportlist-delete'
)
{
const
reid
=
_obj
.
tableData
[
_obj
.
index
-
1
].
id
/* 删除 */
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
''
,
spinner
:
''
,
background
:
'rgba(255, 255, 255, 0.9)'
})
cAction
.
reportAction
.
deleteSubmitReport
(
this
.
rid
,
reid
).
then
(
data
=>
{
if
(
data
.
flag
)
{
this
.
$message
({
type
:
'success'
,
message
:
'删除成功'
})
}
this
.
params
.
pageSize
+=
1
}).
catch
(
e
=>
{
this
.
$message
.
error
(
e
.
message
)
}).
finally
(()
=>
{
loading
.
close
()
})
}
})
},
methods
:
{
goReportSubmit
()
{
this
.
$router
.
push
({
path
:
`/app/my-learn/report-submit/
${
this
.
rid
}
/-1`
})
},
gobackReportActiveList
()
{
this
.
$router
.
push
({
path
:
'/app/service-hall/hall'
})
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
/* 申请 */
.el-date-editor.el-input
{
width
:
100%
;
}
.el-upload__tip
{
line-height
:
1
.5
;
}
</
style
>
client/src/router/routes.js
浏览文件 @
2e07d544
...
@@ -76,17 +76,17 @@ export default [
...
@@ -76,17 +76,17 @@ export default [
]
]
},
},
{
{
path
:
'
service
-hall'
,
path
:
'
affairs
-hall'
,
redirect
:
'error/404'
,
redirect
:
'error/404'
,
component
:
()
=>
import
(
'@/components/learnSysLayout/container.vue'
),
component
:
()
=>
import
(
'@/components/learnSysLayout/container.vue'
),
children
:
[
children
:
[
// { path: 'hall', component: () => import('../pages/service
Hall/hall.vue') },
{
path
:
'hall'
,
component
:
()
=>
import
(
'../pages/affairs
Hall/hall.vue'
)
},
// { path: 'learning-add/:rid', component: () => import('../pages/service
Hall/learningAdd.vue'), props: true },
{
path
:
'learning-add/:rid'
,
component
:
()
=>
import
(
'../pages/affairs
Hall/learningAdd.vue'
),
props
:
true
},
// { path: 'share-add/:rid', component: () => import('../pages/service
Hall/shareAdd.vue'), props: true },
{
path
:
'share-add/:rid'
,
component
:
()
=>
import
(
'../pages/affairs
Hall/shareAdd.vue'
),
props
:
true
},
// { path: 'again-add/:rid', component: () => import('../pages/service
Hall/againAdd.vue'), props: true },
{
path
:
'again-add/:rid'
,
component
:
()
=>
import
(
'../pages/affairs
Hall/againAdd.vue'
),
props
:
true
},
// { path: 'my-apply', component: () => import('../pages/service
Hall/myApply.vue'), props: true },
{
path
:
'my-apply'
,
component
:
()
=>
import
(
'../pages/affairs
Hall/myApply.vue'
),
props
:
true
},
// { path: 'upload-report/:rid/:reid', component: () => import('../pages/service
Hall/uploadReport.vue'), props: true },
{
path
:
'upload-report/:rid/:reid'
,
component
:
()
=>
import
(
'../pages/affairs
Hall/uploadReport.vue'
),
props
:
true
},
// { path: 'view-report/:rid', component: () => import('../pages/service
Hall/viewReport.vue'), props: true }
{
path
:
'view-report/:rid'
,
component
:
()
=>
import
(
'../pages/affairs
Hall/viewReport.vue'
),
props
:
true
}
]
]
}
}
]
]
...
...
server/server/config.js
浏览文件 @
2e07d544
...
@@ -6,8 +6,8 @@ if (state === 'test') {
...
@@ -6,8 +6,8 @@ if (state === 'test') {
// conf.agentApiUrl = 'http://10.1.1.5:8024/'
// conf.agentApiUrl = 'http://10.1.1.5:8024/'
// conf.agentApiUrl = 'http://192.168.3.254:8081'
// conf.agentApiUrl = 'http://192.168.3.254:8081'
}
else
if
(
state
===
'production'
)
{
}
else
if
(
state
===
'production'
)
{
conf
.
agentApiUrl
=
'https://zapi.ezijing.com/'
//
conf.agentApiUrl = 'https://zapi.ezijing.com/'
//
conf.agentApiUrl = 'https://api2.ezijing.com/'
conf
.
agentApiUrl
=
'https://api2.ezijing.com/'
}
}
global
.
app
=
null
global
.
app
=
null
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论