Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
E
ehall-show-h5
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
ehall-show-h5
Commits
cde19757
提交
cde19757
authored
7月 16, 2020
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feature: 新增成绩单功能
上级
63b8ad96
显示空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
333 行增加
和
3 行删除
+333
-3
package.json
package.json
+1
-1
index.js
src/api/index.js
+8
-0
Form.vue
src/components/Form.vue
+2
-0
Layout.vue
src/components/Layout.vue
+7
-1
index.js
src/router/index.js
+16
-0
Index.vue
src/views/Index.vue
+23
-1
Create.vue
src/views/transcript/Create.vue
+189
-0
Index.vue
src/views/transcript/Index.vue
+87
-0
没有找到文件。
package.json
浏览文件 @
cde19757
...
...
@@ -3,7 +3,7 @@
"version"
:
"0.1.0"
,
"private"
:
true
,
"scripts"
:
{
"serve"
:
"vue-cli-service serve"
,
"serve"
:
"vue-cli-service serve
--open
"
,
"build"
:
"vue-cli-service build"
,
"lint"
:
"vue-cli-service lint"
,
"dev-build"
:
"vue-cli-service build --mode dev"
...
...
src/api/index.js
浏览文件 @
cde19757
...
...
@@ -72,3 +72,11 @@ export function getCourses(data) {
method
:
'get'
})
}
// 获取成绩单
export
function
getTranscript
(
params
)
{
return
httpRequest
({
url
:
`/api/ehall/v2/lobby/havereport`
,
method
:
'get'
,
params
})
}
src/components/Form.vue
浏览文件 @
cde19757
...
...
@@ -44,6 +44,7 @@
<!-- 文本框 -->
<van-field
:border=
"false"
:disabled=
"disabled"
v-bind=
"item"
v-model=
"ruleForm[item.name]"
v-else
...
...
@@ -78,6 +79,7 @@ export default {
name
:
'VForm'
,
components
:
{
Upload
},
props
:
{
disabled
:
{
type
:
Boolean
,
default
:
false
},
model
:
{
type
:
Object
,
default
()
{
...
...
src/components/Layout.vue
浏览文件 @
cde19757
...
...
@@ -9,7 +9,7 @@
<ul
class=
"menu-list"
>
<li
@
click=
"toPage(
{ name: 'index' })">首页
</li>
<li
v-for=
"item in
affairType
s"
v-for=
"item in
menu
s"
:key=
"item.id"
@
click=
"
toPage(
{
...
...
@@ -20,6 +20,7 @@
>
{{
item
.
affair_name
}}
</li>
<li
@
click=
"toPage(
{ name: 'transcriptIndex' })">成绩单
</li>
<li
@
click=
"$router.back()"
>
返回上一页
</li>
</ul>
</div>
...
...
@@ -42,6 +43,11 @@ export default {
computed
:
{
affairTypes
()
{
return
this
.
$store
.
state
.
affairTypes
},
menus
()
{
return
this
.
affairTypes
.
filter
(
item
=>
!
[
'pareport'
,
'elreport'
].
includes
(
item
.
form_name
)
)
}
},
methods
:
{
...
...
src/router/index.js
浏览文件 @
cde19757
...
...
@@ -43,6 +43,22 @@ const routes = [
children
:
[
{
name
:
'view'
,
path
:
''
,
component
:
()
=>
import
(
'@/views/View.vue'
)
}
]
},
{
path
:
'/transcript'
,
component
:
Layout
,
children
:
[
{
name
:
'transcriptIndex'
,
path
:
''
,
component
:
()
=>
import
(
'@/views/transcript/Index.vue'
)
},
{
name
:
'transcriptCreate'
,
path
:
'create'
,
component
:
()
=>
import
(
'@/views/transcript/Create.vue'
)
}
]
}
]
...
...
src/views/Index.vue
浏览文件 @
cde19757
...
...
@@ -3,7 +3,7 @@
<h2
class=
"choose-title"
>
请选择事务
</h2>
<div
class=
"choose-list"
>
<van-radio-group
v-model=
"radio"
>
<div
class=
"choose-item"
v-for=
"item in
affairTypes
"
:key=
"item.value"
>
<div
class=
"choose-item"
v-for=
"item in
chooseList
"
:key=
"item.value"
>
<van-radio
:name=
"item.id"
>
{{
item
.
affair_name
}}
</van-radio>
</div>
</van-radio-group>
...
...
@@ -28,6 +28,23 @@ export default {
},
currentItem
()
{
return
this
.
affairTypes
.
find
(
item
=>
item
.
id
===
this
.
radio
)
},
// 成绩单列表
transcriptList
()
{
return
this
.
affairTypes
.
filter
(
item
=>
[
'pareport'
,
'elreport'
].
includes
(
item
.
form_name
)
)
},
chooseList
()
{
let
list
=
this
.
affairTypes
.
filter
(
item
=>
!
[
'pareport'
,
'elreport'
].
includes
(
item
.
form_name
)
)
list
.
push
({
id
:
'transcript'
,
affair_name
:
'成绩单'
,
children
:
this
.
transcriptList
})
return
list
}
},
methods
:
{
...
...
@@ -36,6 +53,11 @@ export default {
this
.
$toast
(
'请选择事务'
)
return
}
// 成绩单
if
(
this
.
radio
===
'transcript'
)
{
this
.
$router
.
push
({
name
:
'transcriptIndex'
})
return
}
this
.
$router
.
push
({
name
:
'list'
,
query
:
Object
.
assign
(
this
.
$route
.
query
,
{
...
...
src/views/transcript/Create.vue
0 → 100644
浏览文件 @
cde19757
<
template
>
<div
class=
"main"
>
<v-form
ref=
"form"
:model=
"formModel"
:fields=
"page.form.fields"
:disabled=
"isSubmited"
@
submit=
"onSubmit"
></v-form>
<div
class=
"fixed-box"
>
<div
class=
"fixed-inner"
>
<div
class=
"fixed-button"
v-if=
"isSubmited"
>
已提交
</div>
<div
class=
"fixed-button"
@
click=
"handleSubmit"
v-else
>
提交
</div>
</div>
</div>
</div>
</
template
>
<
script
>
import
VForm
from
'@/components/Form'
import
*
as
api
from
'@/api/index'
const
pages
=
{
pareport
:
{
title
:
'纸质成绩单'
,
form
:
{
fields
:
[
{
name
:
'personal_name'
,
label
:
'姓名'
,
required
:
true
,
placeholder
:
'请输入姓名'
,
rules
:
[{
required
:
true
,
message
:
'请输入姓名'
}]
},
{
name
:
'class_name'
,
label
:
'班级'
,
required
:
true
,
placeholder
:
'请输入班级'
,
rules
:
[{
required
:
true
,
message
:
'请输入班级'
}]
},
{
type
:
'digit'
,
name
:
'sofia_id'
,
label
:
'Sofia ID'
,
required
:
true
,
placeholder
:
'请输入班级'
,
rules
:
[{
required
:
true
,
message
:
'请输入Sofia ID'
}]
},
{
type
:
'tel'
,
name
:
'telephone'
,
label
:
'电话'
,
required
:
true
,
placeholder
:
'请输入班级'
,
rules
:
[{
required
:
true
,
message
:
'请输入电话'
}]
},
{
name
:
'email'
,
label
:
'邮寄地址'
,
required
:
true
,
placeholder
:
'请输入邮寄地址'
,
rules
:
[{
required
:
true
,
message
:
'请输入邮寄地址'
}]
},
{
type
:
'digit'
,
name
:
'number'
,
label
:
'需打印的份数'
,
required
:
true
,
placeholder
:
'请输入需打印的份数'
,
rules
:
[{
required
:
true
,
message
:
'请输入需打印的份数'
}]
}
]
}
},
elreport
:
{
title
:
'电子成绩单'
,
form
:
{
fields
:
[
{
name
:
'personal_name'
,
label
:
'姓名'
,
required
:
true
,
placeholder
:
'请输入姓名'
,
rules
:
[{
required
:
true
,
message
:
'请输入姓名'
}]
},
{
name
:
'class_name'
,
label
:
'班级'
,
required
:
true
,
placeholder
:
'请输入班级'
,
rules
:
[{
required
:
true
,
message
:
'请输入班级'
}]
},
{
type
:
'digit'
,
name
:
'sofia_id'
,
label
:
'Sofia ID'
,
required
:
true
,
placeholder
:
'请输入班级'
,
rules
:
[{
required
:
true
,
message
:
'请输入Sofia ID'
}]
},
{
name
:
'email'
,
label
:
'邮箱'
,
required
:
true
,
placeholder
:
'请输入邮箱'
,
rules
:
[{
required
:
true
,
message
:
'请输入邮箱'
}]
}
]
}
}
}
export
default
{
name
:
'Create'
,
components
:
{
VForm
},
metaInfo
()
{
return
{
title
:
this
.
page
.
title
}
},
data
()
{
return
{
formModel
:
{}
}
},
watch
:
{
$route
:
{
immediate
:
true
,
deep
:
true
,
handler
(
route
)
{
if
(
!
route
.
query
.
channel
)
{
this
.
$dialog
.
alert
({
message
:
'请选择事务'
})
.
then
(()
=>
{
this
.
$router
.
replace
({
name
:
'index'
,
query
:
this
.
$route
.
query
})
})
}
}
}
},
computed
:
{
// 页面配置
page
()
{
return
pages
[
this
.
channel
]
?
pages
[
this
.
channel
]
:
{}
},
channel
()
{
return
this
.
$route
.
query
.
channel
},
channelId
()
{
return
this
.
$route
.
query
.
channel_id
},
isSubmited
()
{
return
this
.
formModel
.
submit
===
1
}
},
methods
:
{
handleSubmit
()
{
this
.
$refs
.
form
.
submit
()
},
onSubmit
(
data
)
{
data
.
affair_id
=
this
.
channelId
api
.
createAffair
(
data
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
$dialog
.
alert
({
confirmButtonText
:
'确定'
,
message
:
'提交成功'
})
.
then
(()
=>
{
this
.
getDetail
()
})
}
else
{
this
.
$toast
(
response
.
message
)
}
})
},
// 获取详情
getDetail
()
{
api
.
getTranscript
({
type
:
this
.
channel
}).
then
(
response
=>
{
this
.
formModel
=
response
})
}
},
beforeMount
()
{
this
.
getDetail
()
}
}
</
script
>
src/views/transcript/Index.vue
0 → 100644
浏览文件 @
cde19757
<
template
>
<div
class=
"choose"
>
<div
class=
"choose-list"
>
<van-radio-group
v-model=
"radio"
>
<div
class=
"choose-item"
v-for=
"item in transcriptList"
:key=
"item.value"
>
<van-radio
:name=
"item.id"
>
{{
item
.
affair_name
}}
</van-radio>
</div>
</van-radio-group>
</div>
<div
class=
"fixed-box"
>
<div
class=
"fixed-inner"
>
<div
class=
"fixed-button"
@
click=
"toListPage"
>
下一步
</div>
</div>
</div>
</div>
</
template
>
<
script
>
export
default
{
metaInfo
:
{
title
:
'成绩单'
},
data
()
{
return
{
radio
:
''
}
},
computed
:
{
// 所有类型
affairTypes
()
{
return
this
.
$store
.
state
.
affairTypes
},
currentItem
()
{
return
this
.
affairTypes
.
find
(
item
=>
item
.
id
===
this
.
radio
)
},
// 成绩单列表
transcriptList
()
{
return
this
.
affairTypes
.
filter
(
item
=>
[
'pareport'
,
'elreport'
].
includes
(
item
.
form_name
)
)
}
},
methods
:
{
toListPage
()
{
if
(
!
this
.
radio
)
{
this
.
$toast
(
'请选择成绩单类型'
)
return
}
this
.
$router
.
push
({
name
:
'transcriptCreate'
,
query
:
Object
.
assign
(
this
.
$route
.
query
,
{
channel
:
this
.
currentItem
.
form_name
,
channel_id
:
this
.
radio
})
})
},
getList
()
{
if
(
this
.
affairTypes
.
length
)
{
const
[
first
]
=
this
.
affairTypes
this
.
radio
=
first
.
id
}
else
{
this
.
$store
.
dispatch
(
'getAffairTypes'
)
}
}
},
beforeMount
()
{
this
.
getList
()
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.choose
{
padding
:
0
30px
;
}
.choose-title
{
font-size
:
19px
;
font-weight
:
normal
;
}
.choose-list
{
margin-top
:
46px
;
}
.choose-item
{
margin-bottom
:
50px
;
}
</
style
>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论