Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
ministers
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
viitto
ministers
Commits
5da79659
Commit
5da79659
authored
Apr 08, 2021
by
罗超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
6f0447c0
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
562 additions
and
372 deletions
+562
-372
quasar.conf.js
quasar.conf.js
+1
-1
JapaneseTrainApi.js
src/api/JapaneseTrainApi.js
+61
-0
indexApi.js
src/api/indexApi.js
+39
-0
banner.vue
src/components/bnaner/banner.vue
+16
-21
header.vue
src/components/header/header.vue
+106
-43
headerType2.vue
src/components/header/headerType2.vue
+0
-69
JapaneseTrain.vue
src/pages/JapaneseTrain/JapaneseTrain.vue
+72
-98
eduProductDetail.vue
src/pages/JapaneseTrain/eduProductDetail.vue
+36
-48
eduProductList.vue
src/pages/JapaneseTrain/eduProductList.vue
+82
-62
aboutUs.vue
src/pages/aboutUs/aboutUs.vue
+79
-0
index.vue
src/pages/index.vue
+43
-23
studyServe.vue
src/pages/studyServe/studyServe.vue
+26
-6
routes.js
src/router/routes.js
+1
-1
No files found.
quasar.conf.js
View file @
5da79659
...
...
@@ -48,7 +48,7 @@ module.exports = function (ctx) {
build
:
{
vueRouterMode
:
'hash'
,
// available values: 'hash', 'history'
env
:
ctx
.
dev
?
{
API
:
'http://192.168.1.
13:8085
/api'
API
:
'http://192.168.1.
36:8300
/api'
}
:
{
API
:
'http://eduapi.oytour.com/api'
},
...
...
src/api/JapaneseTrainApi.js
0 → 100644
View file @
5da79659
import
request
from
'../utils/request'
let
curDomain
=
location
.
origin
let
groupId
=
localStorage
.
getItem
(
"groupID"
)
//获取课程系列列表
export
function
getCourseCategoryList
()
{
return
request
({
url
:
'/Web/GetCourseCategoryList'
,
method
:
"post"
,
data
:
{
Group_Id
:
groupId
,
Domain
:
curDomain
,
}
});
}
//获取课程列表
export
function
getCoursePageList
(
msg
)
{
return
request
({
url
:
'/Web/GetCoursePageList'
,
method
:
"post"
,
data
:
{
Group_Id
:
groupId
,
Domain
:
curDomain
,
pageIndex
:
msg
.
pageIndex
,
pageSize
:
msg
.
pageSize
,
CourseName
:
msg
.
CourseName
,
QCateIds
:
msg
.
QCateIds
}
});
}
// 根据编号获取课程详情
export
function
getCourseDetail
(
id
)
{
return
request
({
url
:
'/Web/GetCourse'
,
method
:
"post"
,
data
:
{
Group_Id
:
groupId
,
Domain
:
curDomain
,
CourseId
:
id
}
});
}
// 获取开班计划列表
export
function
getClassPlan
(
msg
)
{
return
request
({
url
:
'/Web/GetClassPruduct'
,
method
:
"post"
,
data
:
{
Group_Id
:
groupId
,
Domain
:
curDomain
,
pageIndex
:
msg
.
pageIndex
,
pageSize
:
msg
.
pageSize
,
StartTime
:
msg
.
StartTime
,
EndTime
:
msg
.
EndTime
,
ClassName
:
msg
.
ClassName
,
CateId
:
msg
.
CateId
}
});
}
\ No newline at end of file
src/api/indexApi.js
0 → 100644
View file @
5da79659
import
request
from
'../utils/request'
let
curDomain
=
location
.
origin
let
groupId
=
localStorage
.
getItem
(
"groupID"
)
//获取网站配置
export
function
getWebConfig
()
{
return
request
({
url
:
'/Web/GetWebSiteConfig'
,
method
:
"post"
,
data
:
{
msg
:
{
Domain
:
curDomain
}
}
});
}
//获取网站导航列表
export
function
getWebNavList
(
type
)
{
return
request
({
url
:
'/Web/GetWebNavList'
,
method
:
"post"
,
data
:
{
Group_Id
:
groupId
,
NavType
:
type
,
Domain
:
curDomain
}
});
}
//获取新闻类型列表
export
function
getWebNewsTypeList
()
{
return
request
({
url
:
'/Web/GetWebNewsTypeList'
,
method
:
"post"
,
data
:
{
Group_Id
:
groupId
,
Domain
:
curDomain
}
});
}
\ No newline at end of file
src/components/bnaner/banner.vue
View file @
5da79659
...
...
@@ -4,7 +4,7 @@
v-model=
"slide"
swipeable
animated
navigation
:navigation=
"swiperList.length>1"
height=
"100%"
autoplay
infinite
...
...
@@ -15,16 +15,17 @@
<div
v-else
@
click=
"onClick"
class=
"parmaryBtn"
></div>
</
template
>
<q-carousel-slide
v-for=
"item in
bann
erList"
:key=
"item.
i
d"
:name=
"item.
n
ame"
:img-src=
"item.
url
"
v-for=
"item in
swip
erList"
:key=
"item.
I
d"
:name=
"item.
NavTypeN
ame"
:img-src=
"item.
BgImg
"
>
<div
class=
"conbox"
>
<div
class=
"con1"
><span
class=
"jh"
>
甲鹤-
</span>
特色教室
</div>
<div
class=
"con1"
><span
class=
"jh"
>
{{item.NavTitle}}
<!--甲鹤--->
</span>
<!--特色教室-->
</div>
<div
class=
"con2"
>
这里给一点小文字介绍什么的最好,这里给一点小文字介绍什么的最好,这里给一点
小文字介绍什么的最好。
{{item.SubTitle}}
<!-- 这里给一点小文字介绍什么的最好,这里给一点小文字介绍什么的最好,这里给一点
小文字介绍什么的最好。 -->
</div>
<div
class=
"con3"
></div>
<div
class=
"btn"
>
查看更多
</div>
...
...
@@ -35,21 +36,15 @@
</template>
<
script
>
export
default
{
props
:{
swiperList
:{
type
:
Array
,
default
:[]
},
},
data
()
{
return
{
slide
:
"first"
,
bannerList
:
[
{
id
:
1
,
name
:
"first"
,
url
:
require
(
"../../assets/images/index/banner_bg.png"
),
},
{
id
:
2
,
name
:
"second"
,
url
:
require
(
"../../assets/images/index/banner_bg.png"
),
},
],
slide
:
this
.
swiperList
.
NavTitle
,
};
},
};
...
...
src/components/header/header.vue
View file @
5da79659
<
template
>
<div
:style=
"
{ opacity: scorllNum
<
300
?
'
1
'
:
scorllNum
/
1080
}"
>
<div>
<div
id=
"dowebok"
class=
"animated bounceOutLeft animate__animated animate__fadeInDown"
:class=
"
{
'header_absolute': scorllNum
<
300
,
'
header_fixed
'
:
scorllNum
>
= 300,
}"
:style=
"
{ opacity: scorllNum
<
300
?
'
1
'
:
scorllNum
/
1080
}"
v-if=
"type == 1"
class=
"type1"
>
<div
id=
"dowebok"
:class=
"
{
header_absolute: scorllNum
<
300
,
header_fixed:
scorllNum
>
= 300,
}"
>
<div
class=
"row items-center full-height"
>
<div
class=
"col"
>
<img
style=
"height: 61px"
src=
"../../assets/images/logo.png"
/>
</div>
<div
class=
"col"
>
<q-tabs
v-model=
"tab"
class=
"text-dark"
active-color=
"dark"
align=
"justify"
narrow-indicator
dense
>
<q-tab
v-for=
"(item, index) in menuList"
:key=
"index"
:name=
"item.Name"
:label=
"item.Name"
content-class=
"items-nav"
@
click=
"jumpPage(item.MenuUrl)"
/>
</q-tabs>
</div>
</div>
</div>
</div>
<div
class=
"type2"
v-if=
"type == 2"
>
<div
class=
"row items-center full-height"
>
<div
class=
"col"
>
<div
class=
"col"
style=
"marginLeft:3.125vw"
>
<img
style=
"height: 61px"
src=
"../../assets/images/logo.png"
/>
</div>
<div
class=
"col"
>
...
...
@@ -22,15 +57,21 @@
narrow-indicator
dense
>
<!--
<q-route-tab
to=
"/index"
name=
"home"
label=
"首页"
content-class=
"items-nav"
/>
-->
<q-tab
name=
"home"
label=
"甲鹤教育"
content-class=
"items-nav"
@
click=
"jumpPage('/index')"
/>
<q-tab
name=
"japan"
label=
"日语培训"
content-class=
"items-nav"
@
click=
"jumpPage('/JapaneseTrain')"
/>
<q-tab
v-for=
"(item, index) in menuList"
:key=
"index"
:name=
"item.Name"
:label=
"item.Name"
content-class=
"items-nav"
@
click=
"jumpPage(item.MenuUrl)"
/>
<!--
<q-tab
name=
"home"
label=
"甲鹤教育"
content-class=
"items-nav"
@
click=
"jumpPage('/index')"
/>
<q-tab
name=
"japan"
label=
"日语培训"
content-class=
"items-nav"
@
click=
"jumpPage('/JapaneseTrain')"
/>
<q-tab
name=
"liuxue"
label=
"留学服务"
content-class=
"items-nav"
@
click=
"jumpPage('/studyServe')"
/>
<q-tab
name=
"jiuye"
label=
"就业服务"
content-class=
"items-nav"
/>
<q-tab
name=
"news"
label=
"媒体中心"
content-class=
"items-nav"
/>
<q-tab
name=
"about"
label=
"关于我们"
content-class=
"items-nav"
@
click=
"jumpPage('/aboutUs')"
/>
<q-tab
name=
"join"
label=
"加入我们"
content-class=
"items-nav"
/>
<q-tab
name=
"about"
label=
"关于我们"
content-class=
"items-nav"
/>
<q-tab
name=
"join"
label=
"加入我们"
content-class=
"items-nav"
/>
-->
</q-tabs>
</div>
</div>
...
...
@@ -44,48 +85,70 @@ export default {
type
:
Number
,
default
:
0
,
},
menuList
:
{
typeof
:
Array
,
default
:
[],
},
curMenu
:{
typeof
:
String
,
default
:
"首页"
},
type
:
{
typeof
:
Number
,
default
:
1
,
},
},
data
()
{
return
{
tab
:
"home"
,
tab
:
this
.
curMenu
};
},
methods
:{
jumpPage
(
url
){
this
.
$router
.
push
(
url
)
}
watch
:{
curMenu
(
val
){
this
.
tab
=
val
}
},
methods
:
{
jumpPage
(
url
)
{
this
.
$router
.
push
(
url
);
},
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
// #dowebok {
// animation-duration:1s; //动画持续时间
// animation-delay:1s; //动画延迟时间
// animation-iteration-count: infinite; //动画执行次数
// animation-duration:1s; //动画持续时间
// animation-delay:1s; //动画延迟时间
// animation-iteration-count: infinite; //动画执行次数
// }
.type1
{
.header_absolute
{
margin-top
:
61px
;
height
:
61px
;
z-index
:
100
;
left
:
58px
;
right
:
58px
;
position
:
absolute
;
}
.header_fixed
{
width
:
100vw
;
position
:
fixed
;
top
:
0
;
left
:
0
;
z-index
:
100
;
padding
:
0
3
.124vw
;
background-color
:
#f6f6f6
;
}
.header_absolute
{
margin-top
:
61px
;
height
:
61px
;
z-index
:
100
;
left
:
58px
;
right
:
58px
;
position
:
absolute
;
}
.header_fixed
{
width
:
100vw
;
position
:
fixed
;
top
:
0
;
left
:
0
;
z-index
:
100
;
padding
:
0
3
.124vw
;
background-color
:
#f6f6f6
;
.items-nav
.q-tab__label
{
font-size
:
16px
!
important
;
font-family
:
"pingfang-b"
!
important
;
}
}
.items-nav
.q-tab__label
{
.type2
{
.items-nav
.q-tab__label
{
font-size
:
16px
!
important
;
font-family
:
"pingfang-b"
!
important
;
}
}
</
style
>
\ No newline at end of file
src/components/header/headerType2.vue
deleted
100644 → 0
View file @
6f0447c0
<
template
>
<div>
<div
id=
"dowebok"
class=
"animated bounceOutLeft animate__animated animate__fadeInDown header_absolute"
>
<div
class=
"row items-center full-height"
>
<div
class=
"col"
>
<img
style=
"height: 61px"
src=
"../../assets/images/logo.png"
/>
</div>
<div
class=
"col"
>
<q-tabs
v-model=
"tab"
class=
"text-dark"
active-color=
"dark"
align=
"justify"
narrow-indicator
dense
>
<q-tab
name=
"home"
label=
"甲鹤教育"
content-class=
"items-nav"
@
click=
"jumpPage('/index')"
/>
<q-tab
name=
"japan"
label=
"日语培训"
content-class=
"items-nav"
@
click=
"jumpPage('/JapaneseTrain')"
/>
<q-tab
name=
"liuxue"
label=
"留学服务"
content-class=
"items-nav"
@
click=
"jumpPage('/studyServe')"
/>
<q-tab
name=
"jiuye"
label=
"就业服务"
content-class=
"items-nav"
/>
<q-tab
name=
"news"
label=
"媒体中心"
content-class=
"items-nav"
/>
<q-tab
name=
"about"
label=
"关于我们"
content-class=
"items-nav"
/>
<q-tab
name=
"join"
label=
"加入我们"
content-class=
"items-nav"
/>
</q-tabs>
</div>
</div>
</div>
</div>
</
template
>
<
script
>
export
default
{
props
:
{
scorllNum
:
{
type
:
Number
,
default
:
0
,
},
},
data
()
{
return
{
tab
:
"home"
,
};
},
methods
:{
jumpPage
(
url
){
this
.
$router
.
push
(
url
)
}
},
watch
:{
}
};
</
script
>
<
style
lang=
"scss"
scoped
>
.header_absolute
{
height
:
61px
;
// z-index: 100;
// position: absolute;
// top: 0;
// left: 0;
}
.items-nav
.q-tab__label
{
font-size
:
16px
!
important
;
font-family
:
"pingfang-b"
!
important
;
}
</
style
>
\ No newline at end of file
src/pages/JapaneseTrain/JapaneseTrain.vue
View file @
5da79659
<
template
>
<div
class=
"jiahe"
>
<Header
/>
<Header
:menuList=
"menuList"
:curMenu=
"menuList[1].Name"
:type=
"2"
/>
<!-- bannner部分 -->
<Banner/>
<Banner
:swiperList=
"swiperData"
/>
<!-- 教育产品 -->
<div
class=
"edu_con"
>
<div
class=
"edu_name"
>
教育产品
</div>
<div
class=
"edu_subname"
>
副标题
</div>
<div
class=
"inputBox"
>
<q-input
v-model=
"search"
v-model=
"search
Text
"
filled
type=
"search"
clearable
...
...
@@ -22,8 +22,9 @@
</q-input>
<q-select
outlined
v-model=
"
model
"
v-model=
"
selectText
"
:options=
"options"
option-label =
"CateName"
clearable
class=
"inputBorder"
placeholder=
"可查询课程系列/名称"
...
...
@@ -33,13 +34,11 @@
</q-select>
</div>
<div
class=
"eduConbox"
>
<div
v-for=
"item in eduList"
:key=
"item.id"
class=
"itemBox"
>
<!-- <q-img src="../assets/images/JapaneseTrain/edu1.png" class="itemImg" /> -->
<q-img
:src=
"item.url"
class=
"itemImg"
/>
<div
v-for=
"item in courseList"
:key=
"item.CourseId"
class=
"itemBox"
@
click=
"seeDetail(item.CourseId)"
>
<q-img
:src=
"item.CoverImg"
class=
"itemImg"
/>
<div
class=
"infoBox"
>
<div
class=
"courseName"
>
{{ item.
courseName
}}
</div>
<div
class=
"desc"
>
{{
item.desc
}}
</div>
<div
class=
"courseName"
>
{{ item.
CourseName
}}
</div>
<div
class=
"desc"
>
{{
item.CourseFeature
}}
</div>
</div>
</div>
</div>
...
...
@@ -51,7 +50,7 @@
<div
class=
"edu_subname"
>
副标题
</div>
<div
class=
"inputBox"
>
<q-input
v-model=
"
s
earch"
v-model=
"
classS
earch"
filled
type=
"search"
clearable
...
...
@@ -65,7 +64,7 @@
<div
class=
"inputBorder2"
>
<q-select
outlined
v-model=
"
model
"
v-model=
"
classSelect
"
:options=
"options"
clearable
placeholder=
"可查询课程系列/名称"
...
...
@@ -77,7 +76,7 @@
<div
class=
"inputBorder2"
>
<q-select
outlined
v-model=
"
model
"
v-model=
"
classSelect2
"
:options=
"options"
clearable
placeholder=
"可查询课程系列/名称"
...
...
@@ -90,41 +89,41 @@
<div
class=
"classPlanBox"
>
<div
v-for=
"item in classPlanList"
:key=
"item.
i
d"
:key=
"item.
ClassI
d"
class=
"classPlanItemBox"
>
<div
class=
"infoBox1"
>
<div
class=
"className"
>
{{ item.
c
lassName }}
</div>
<div
class=
"className"
>
{{ item.
C
lassName }}
</div>
<div
class=
"courseInfo"
style=
"margin-bottom: 0.625vw"
>
<q-img
src=
"../../assets/images/JapaneseTrain/icon1.png"
class=
"itemIcon"
/>
{{ item.
courseInfo
}}
/>
{{ item.
CourseName
}}
</div>
<div
class=
"courseInfo"
>
<q-img
src=
"../../assets/images/JapaneseTrain/icon2.png"
class=
"itemIcon"
/>
{{ item.
courseTime }}
/>
{{ item.
ClassHours }}课时
</div>
</div>
<div
class=
"infoBox2"
>
<div
class=
"title"
>
招生信息
</div>
<div
class=
"stuInfo"
style=
"margin-bottom: 0.729vw"
>
截止报名时间
<span
class=
"stuTime"
>
{{ item.
joinEnd
}}
</span>
截止报名时间
<span
class=
"stuTime"
>
{{ item.
EndOrderTime
}}
</span>
</div>
<div
class=
"stuInfo"
>
开始上课时间
<span
class=
"stuTime"
>
{{ item.
joinStart
}}
</span>
开始上课时间
<span
class=
"stuTime"
>
{{ item.
OpenTime
}}
</span>
</div>
</div>
<div
class=
"infoBox3"
>
<div
class=
"title"
>
名额信息
</div>
<div
style=
"margin-bottom: 0.729vw"
class=
"numInfo"
>
计划招生人数
<span
class=
"planNum"
>
{{ item.
planNum
}}
</span
计划招生人数
<span
class=
"planNum"
>
{{ item.
ClassPersion
}}
</span
>
人
</div>
<div
class=
"numInfo"
>
剩余招生名额
<span
class=
"surplusNum"
>
{{ item.
s
urplusNum }}
</span
剩余招生名额
<span
class=
"surplusNum"
>
{{ item.
S
urplusNum }}
</span
>
人
</div>
</div>
...
...
@@ -143,13 +142,13 @@
</div>
</template>
<
script
>
import
Header
from
"../../components/header/header
Type2
"
;
import
Header
from
"../../components/header/header"
;
import
Footer
from
"../../components/footer/footerType2"
;
import
Banner
from
"../../components/bnaner/banner"
;
import
TeacherTeam
from
"../../components/teacherTeam/teacherTeam"
;
import
{
getWebNavList
}
from
"../../api/indexApi.js"
;
import
{
getCourseCategoryList
,
getCoursePageList
,
getClassPlan
}
from
"../../api/JapaneseTrainApi"
export
default
{
name
:
"PageIndex"
,
components
:
{
Header
,
Footer
,
...
...
@@ -159,91 +158,66 @@ export default {
},
data
()
{
return
{
slide
:
"first"
,
pageScroll
:
1080
,
current
:
4
,
search
:
""
,
model
:
""
,
options
:
[
"Google"
,
"Facebook"
,
"Twitter"
,
"Apple"
,
"Oracle"
],
eduList
:
[
{
id
:
1
,
url
:
require
(
"../../assets/images/JapaneseTrain/edu1.png"
),
courseName
:
"什么什么课程"
,
desc
:
"对课程的一些二级文字介绍内容,这里放一排位置。多的省略号..."
,
},
{
id
:
2
,
url
:
require
(
"../../assets/images/JapaneseTrain/edu2.png"
),
courseName
:
"什么什么课程"
,
desc
:
""
,
},
{
id
:
3
,
url
:
require
(
"../../assets/images/JapaneseTrain/edu3.png"
),
courseName
:
"什么什么课程"
,
desc
:
""
,
},
{
id
:
4
,
url
:
require
(
"../../assets/images/JapaneseTrain/edu4.png"
),
courseName
:
"什么什么课程"
,
desc
:
""
,
},
{
id
:
5
,
url
:
require
(
"../../assets/images/JapaneseTrain/edu5.png"
),
courseName
:
"什么什么课程"
,
desc
:
""
,
},
{
id
:
6
,
url
:
require
(
"../../assets/images/JapaneseTrain/edu6.png"
),
courseName
:
"什么什么课程"
,
desc
:
""
,
},
],
classPlanList
:
[
menuList
:[
{},
{
id
:
1
,
className
:
"东野大木(五班)"
,
courseInfo
:
"日语 基础0-N3直通车课程系列"
,
courseTime
:
"156课时"
,
joinStart
:
"2020年10月30日"
,
joinEnd
:
"2020年10月30日"
,
planNum
:
10
,
surplusNum
:
1
,
},
{
id
:
2
,
className
:
""
,
courseInfo
:
""
,
courseHour
:
""
,
joinStart
:
""
,
joinEnd
:
""
,
planNum
:
10
,
surplusNum
:
10
,
},
],
Name
:
""
,
},],
swiperData
:[],
searchText
:
""
,
selectText
:
""
,
classSearch
:
""
,
classSelect
:
""
,
classSelect2
:
""
,
options
:
[],
coursemsg
:{
pageIndex
:
1
,
pageSize
:
6
,
},
classmsg
:{
pageIndex
:
1
,
pageSize
:
2
,
},
courseList
:
[],
classPlanList
:
[],
};
},
methods
:
{
//滚动条高度
// handleScroll() {
// this.pageScroll =
// document.documentElement.scrollTop || document.body.scrollTop;
// console.log(this.pageScroll);
// },
//去教育产品列表
goEduProductList
()
{
this
.
$router
.
push
(
"/eduProductList"
);
},
//查看详情
seeDetail
(
id
){
this
.
$router
.
push
({
path
:
'/eduProductDetail'
,
query
:
{
CourseId
:
id
}})
},
//获取网站导航列表
async
getWebNavList
(){
let
res
=
await
getWebNavList
(
2
)
this
.
swiperData
=
res
.
Data
},
//获取课程系列列表
async
getCourseCategoryList
(){
let
res
=
await
getCourseCategoryList
()
this
.
options
=
res
.
Data
},
//获取课程列表
async
getCoursePageList
(){
let
res
=
await
getCoursePageList
(
this
.
coursemsg
)
this
.
courseList
=
res
.
Data
.
PageData
},
// 获取开班计划列表
async
getClassPlan
(){
let
res
=
await
getClassPlan
(
this
.
classmsg
)
this
.
classPlanList
=
res
.
Data
.
PageData
}
},
mounted
()
{
// window.addEventListener("scroll", this.handleScroll);
this
.
menuList
=
JSON
.
parse
(
localStorage
.
getItem
(
"menuList"
))
this
.
getWebNavList
()
this
.
getCourseCategoryList
()
this
.
getCoursePageList
()
this
.
getClassPlan
()
},
...
...
src/pages/JapaneseTrain/eduProductDetail.vue
View file @
5da79659
<
template
>
<div
class=
"jiahe"
>
<Header
/>
<Header
:menuList=
"menuList"
:curMenu=
"menuList[1].Name"
:type=
"2"
/>
<div
class=
"detailBox"
>
<div
class=
"left"
>
<div
class=
"border_out"
>
...
...
@@ -8,11 +8,9 @@
</div>
</div>
<div
class=
"right"
>
<div
class=
"name"
>
标日基础课程
</div>
<div
class=
"name"
>
{{
courseDetail
.
CourseName
}}
</div>
<div
class=
"line"
></div>
<div
class=
"desc"
>
全新教学模式:母语式教学,让你先学会开口再去理解。先听懂然后会说再去了解如何书写,全面了解日式思维,然后熟练应用日语专业知识学习;能够更全面阅读和理解有关各类话题的。教学特色:免费测试 新学员入学安排水平鉴定考试,根据学生水平进行分班;线上课程 实现教学“零距离”,线下全程监督跟踪;即时答疑 遇到问题随时提,获得专业解答;免费重修 出勤率达到90%的学员,学不会免费重修;免费补课 缺勤课程可跟班补习或录播视频补习;课后巩固 专业配套课后练习巩固知识,老师处一对一过关;会话练习 与外教一起练习口语会话,拒绝“哑巴”日语。
</div>
<div
class=
"desc"
v-html=
"courseDetail.CourseIntro"
></div>
<div
class=
"consult"
>
立即咨询
</div>
</div>
</div>
...
...
@@ -20,11 +18,16 @@
<div
class=
"edu_con"
>
<div
class=
"edu_name"
>
教育相关产品
</div>
<div
class=
"eduConbox"
>
<div
v-for=
"item in eduProductList"
:key=
"item.id"
class=
"itemBox"
>
<q-img
:src=
"item.url"
class=
"itemImg"
/>
<div
v-for=
"item in RandList"
:key=
"item.CourseId"
class=
"itemBox"
@
click=
"seeDetail(item.CourseId)"
>
<q-img
:src=
"item.CoverImg"
class=
"itemImg"
/>
<div
class=
"infoBox"
>
<div
class=
"courseName"
>
{{
item
.
c
ourseName
}}
</div>
<div
class=
"desc"
>
{{
item
.
desc
}}
</div>
<div
class=
"courseName"
>
{{
item
.
C
ourseName
}}
</div>
<div
class=
"desc"
>
{{
item
.
CourseFeature
}}
</div>
</div>
</div>
</div>
...
...
@@ -35,59 +38,44 @@
</
template
>
<
script
>
import
Header
from
"../../components/header/header
Type2
"
;
import
Header
from
"../../components/header/header"
;
import
Footer
from
"../../components/footer/footerType2"
;
import
{
getCourseDetail
}
from
"../../api/JapaneseTrainApi"
;
export
default
{
name
:
"PageIndex"
,
components
:
{
Header
,
Footer
,
},
data
()
{
return
{
eduProductList
:
[
{
id
:
1
,
url
:
require
(
"../../assets/images/JapaneseTrain/edu1.png"
),
courseName
:
"什么什么课程"
,
desc
:
"对课程的一些二级文字介绍内容,这里放一排位置。多的省略号..."
,
},
{
id
:
2
,
url
:
require
(
"../../assets/images/JapaneseTrain/edu2.png"
),
courseName
:
"什么什么课程"
,
desc
:
""
,
},
{
id
:
3
,
url
:
require
(
"../../assets/images/JapaneseTrain/edu3.png"
),
courseName
:
"什么什么课程"
,
desc
:
""
,
},
menuList
:
[
{},
{
id
:
4
,
url
:
require
(
"../../assets/images/JapaneseTrain/edu4.png"
),
courseName
:
"什么什么课程"
,
desc
:
""
,
},
{
id
:
5
,
url
:
require
(
"../../assets/images/JapaneseTrain/edu5.png"
),
courseName
:
"什么什么课程"
,
desc
:
""
,
},
{
id
:
6
,
url
:
require
(
"../../assets/images/JapaneseTrain/edu6.png"
),
courseName
:
"什么什么课程"
,
desc
:
""
,
Name
:
""
,
},
],
courseId
:
0
,
courseDetail
:
{},
RandList
:
[],
};
},
methods
:
{},
mounted
()
{},
methods
:
{
async
getCourseDetail
()
{
let
res
=
await
getCourseDetail
(
this
.
courseId
);
this
.
courseDetail
=
res
.
Data
.
CourseObj
;
this
.
RandList
=
res
.
Data
.
RandList
;
},
//查看详情
seeDetail
(
id
)
{
this
.
$router
.
push
({
path
:
"/eduProductDetail"
,
query
:
{
CourseId
:
id
}
});
},
},
mounted
()
{
this
.
menuList
=
JSON
.
parse
(
localStorage
.
getItem
(
"menuList"
))
this
.
courseId
=
this
.
$route
.
query
.
CourseId
;
this
.
getCourseDetail
();
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/pages/JapaneseTrain/eduProductList.vue
View file @
5da79659
<
template
>
<div
class=
"jiahe"
>
<Header
:scorllNum=
"pageScroll"
/>
<Header
:menuList=
"menuList"
:curMenu=
"menuList[1].Name"
:type=
"2"
/>
<!-- 教育产品 -->
<div
class=
"edu_con"
>
<div
class=
"edu_name"
>
教育产品
</div>
<div
class=
"edu_subname"
>
副标题
</div>
<div
class=
"inputBox"
>
<q-input
v-model=
"
search
"
v-model=
"
msg.CourseName
"
filled
type=
"search"
clearable
placeholder=
"可搜索课程系列/名称"
class=
"inputBorder"
@
change=
"changeSearchText"
@
clear=
"clearSearch"
>
<template
v-slot:prepend
>
<q-icon
name=
"search"
/>
...
...
@@ -21,8 +22,9 @@
</q-input>
<q-select
outlined
v-model=
"
model
"
v-model=
"
selectText
"
:options=
"options"
option-label =
"CateName"
clearable
class=
"inputBorder"
placeholder=
"可查询课程系列/名称"
...
...
@@ -31,25 +33,29 @@
>
</q-select>
</div>
<div
class=
"eduConbox"
>
<div
v-for=
"item in
eduProductList"
:key=
"item.id"
class=
"itemBox"
@
click=
"seeDetail"
>
<q-img
:src=
"item.
url
"
class=
"itemImg"
/>
<div
class=
"eduConbox"
v-if=
"courseList.length>0"
>
<div
v-for=
"item in
courseList"
:key=
"item.CourseId"
class=
"itemBox"
@
click=
"seeDetail(item.CourseId)"
>
<q-img
:src=
"item.
CoverImg
"
class=
"itemImg"
/>
<div
class=
"infoBox"
>
<div
class=
"courseName"
>
{{ item.
c
ourseName }}
</div>
<div
class=
"desc"
>
{{ item.
desc
}}
</div>
<div
class=
"courseName"
>
{{ item.
C
ourseName }}
</div>
<div
class=
"desc"
>
{{ item.
CourseFeature
}}
</div>
</div>
</div>
</div>
<div
v-if=
"courseList.length==0"
class=
"nodata"
>
暂无数据
</div>
</div>
<div
class=
"pageBox"
>
<q-pagination
v-model=
"current"
v-model=
"current
Page
"
color=
"light-green-10"
:max=
"
10
"
:max=
"
pageCount
"
:max-pages=
"6"
:boundary-numbers=
"true"
@
input=
"changePage"
v-if=
"pageCount>1"
>
</q-pagination>
</div>
<!-- 底部 -->
...
...
@@ -58,72 +64,88 @@
</template>
<
script
>
import
Header
from
"../../components/header/header
Type2
"
;
import
Header
from
"../../components/header/header"
;
import
Footer
from
"../../components/footer/footerType2"
;
// import { QPagination} from 'quasar'
import
{
getCourseCategoryList
,
getCoursePageList
}
from
"../../api/JapaneseTrainApi"
export
default
{
name
:
"PageIndex"
,
components
:
{
Header
,
Footer
,
// QPagination
},
data
()
{
return
{
slide
:
"first"
,
current
:
1
,
eduProductList
:
[
{
id
:
1
,
url
:
require
(
"../../assets/images/JapaneseTrain/edu1.png"
),
courseName
:
"什么什么课程"
,
desc
:
"对课程的一些二级文字介绍内容,这里放一排位置。多的省略号..."
,
},
{
id
:
2
,
url
:
require
(
"../../assets/images/JapaneseTrain/edu2.png"
),
courseName
:
"什么什么课程"
,
desc
:
""
,
},
{
id
:
3
,
url
:
require
(
"../../assets/images/JapaneseTrain/edu3.png"
),
courseName
:
"什么什么课程"
,
desc
:
""
,
},
{
id
:
4
,
url
:
require
(
"../../assets/images/JapaneseTrain/edu4.png"
),
courseName
:
"什么什么课程"
,
desc
:
""
,
},
{
id
:
5
,
url
:
require
(
"../../assets/images/JapaneseTrain/edu5.png"
),
courseName
:
"什么什么课程"
,
desc
:
""
,
},
menuList
:[
{},
{
id
:
6
,
url
:
require
(
"../../assets/images/JapaneseTrain/edu6.png"
),
courseName
:
"什么什么课程"
,
desc
:
""
,
},
Name
:
""
,
},],
currentPage
:
1
,
selectText
:
""
,
options
:
[],
pageCount
:
0
,
msg
:{
pageIndex
:
1
,
pageSize
:
24
,
CourseName
:
""
,
QCateIds
:
""
},
courseList
:
[
],
};
},
watch
:{
selectText
(
val
){
if
(
val
==
null
){
this
.
msg
.
QCateIds
=
""
// this.msg.CourseName=""
}
else
{
this
.
msg
.
QCateIds
=
val
.
CateId
// this.msg.CourseName=val.CateName
}
this
.
getCoursePageList
()
}
},
methods
:
{
seeDetail
(){
this
.
$router
.
push
(
"/eduProductDetail"
)
//翻页
changePage
(
val
){
this
.
msg
.
pageIndex
=
val
this
.
getCoursePageList
(
this
.
msg
)
},
// 搜索框
changeSearchText
(){
this
.
getCoursePageList
(
this
.
msg
)
},
// 清空搜索框
clearSearch
(){
this
.
msg
.
CourseName
=
""
this
.
getCoursePageList
(
this
.
msg
)
},
//查看详情
seeDetail
(
id
){
this
.
$router
.
push
({
path
:
'/eduProductDetail'
,
query
:
{
CourseId
:
id
}})
},
//获取课程系列列表
async
getCourseCategoryList
(){
let
res
=
await
getCourseCategoryList
()
this
.
options
=
res
.
Data
},
//获取课程列表
async
getCoursePageList
(){
let
res
=
await
getCoursePageList
(
this
.
msg
)
this
.
courseList
=
res
.
Data
.
PageData
this
.
pageCount
=
res
.
Data
.
PageCount
}
},
mounted
(){
this
.
menuList
=
JSON
.
parse
(
localStorage
.
getItem
(
"menuList"
))
this
.
getCourseCategoryList
()
this
.
getCoursePageList
()
}
};
</
script
>
<
style
lang=
"scss"
scoped
>
.jiahe
{
// min-height: 100vh;
background-color
:
#faf8f9
;
}
...
...
@@ -131,20 +153,15 @@ export default {
width
:
62
.5vw
;
margin
:
0
auto
;
padding-top
:
4
.01vw
;
// margin-bottom: 4.974vw;
.edu_name
{
text-align
:
center
;
font-size
:
1
.562vw
;
// font-family: Microsoft YaHei;
// font-weight: bold;
font-family
:
"pingfang-b"
!
important
;
color
:
#111111
;
}
.edu_subname
{
text-align
:
center
;
font-size
:
0
.833vw
;
// font-family: Microsoft YaHei;
// font-weight: 400;
color
:
#888888
;
}
.inputBox
{
...
...
@@ -211,4 +228,7 @@ export default {
.q-btn
{
border
:
1px
solid
#D2D7DD
;
}
.nodata
{
text-align
:
center
;
}
</
style
>
\ No newline at end of file
src/pages/aboutUs/aboutUs.vue
View file @
5da79659
<
template
>
<div
class=
"jiahe"
>
<Header
/>
<Banner
/>
<div
class=
"main"
>
<!-- 董事长 -->
<div
class=
"imgBox"
></div>
<div
class=
"descBox"
>
<div
class=
"dsz_name"
>
董事长
</div>
<div
class=
"line"
></div>
<div
class=
"dsz_con1"
>
全心追求魅力人格,全意建设美丽祖国。
</div>
<div
class=
"dsz_con2"
>
致力于培养具有国际视野,胸怀祖国人民,尊重自然规律,热爱世界和平,精通语言专业知识,拥有跨文化交际能力,人文情怀的国际型人才。
甲鹤外国语培训学校地处四川省成都市中心区,与四川大学,四川音乐学院比隣。拥有来自北京外国语大学、四川大学、四川外国语大学、日本东京工业大学、筑波大学、日本早稻田大学等国内外知名高校的一流教师团队。
学校与日本朝日大学、宇都宫共和大学、东京福祉大学、樱美林大学等日本高校建立了合作关系。本校学生日语达N2便可以直接推荐保送进入上述各大学就读本科专业。想要选择日本其他国、公、私立大学的学员,学校亦可推荐一流的日本语学校以及私塾。
学校凭借10年累积,不仅与日本知名大学长期合作;并且向日本IT企业和日本旅行社输送各类人才。与日本政界、学界、商界均保持良好合作关系。
</div>
</div>
</div>
<Footer
/>
</div>
</
template
>
<
script
>
import
Header
from
"../../components/header/header"
;
import
Banner
from
"../../components/bnaner/banner"
;
import
Footer
from
"../../components/footer/footerType2"
;
export
default
{
components
:
{
Banner
,
Header
,
Footer
,
},
data
()
{
return
{};
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
.jiahe
{
background-color
:
#f6f6f6
;
}
.main
{
width
:
62
.5vw
;
height
:
41
.817vw
;
margin
:
5
.208vw
auto
;
display
:
flex
;
}
.imgBox
{
width
:
33
.854vw
;
height
:
41
.817vw
;
background-color
:
#eeeeee
;
}
.descBox
{
padding-top
:
7
.187vw
;
padding-left
:
3
.125vw
;
.dsz_name
{
font-size
:
1
.5625vw
;
font-family
:
"pingfang-b"
!
important
;
color
:
#111111
;
line-height
:
1
.5625vw
;
}
.line
{
width
:
4
.166vw
;
height
:
1px
;
background-color
:
#111111
;
margin-top
:
1
.5625vw
;
margin-bottom
:
1
.5625vw
;
}
.dsz_con1
{
font-size
:
0
.625vw
;
font-family
:
PingFang
SC
;
font-weight
:
bold
;
color
:
#111111
;
line-height
:
34px
;
}
}
</
style
>
\ No newline at end of file
src/pages/index.vue
View file @
5da79659
<
template
>
<div
class=
"jiahe"
>
<Header
:scorllNum=
"pageScroll"
/>
<Header
:scorllNum=
"pageScroll"
:menuList=
"menuList"
/>
<!-- 第一部分 -->
<div
class=
"relative-position banner-box"
id=
"elone"
>
<div
class=
"absolute-top-left fit bg-dark"
>
...
...
@@ -12,6 +12,7 @@
navigation
height=
"100%"
infinite
autoplay
control-type=
"outline"
>
<template
v-slot:navigation-icon=
"
{ active, onClick }">
...
...
@@ -19,25 +20,24 @@
<div
v-else
@
click=
"onClick"
class=
"parmaryBtn"
></div>
</
template
>
<q-carousel-slide
name=
"first"
img-src=
"../assets/images/index/banner_bg.png"
v-for=
"(item,index) in swiperList"
:key=
"index"
:name=
"item.NavTypeName"
:img-src=
"item.BgImg"
>
<div
class=
"con1"
><span
class=
"jh"
>
甲鹤-
</span>
您身边的日语
</div>
<div
class=
"con1"
><span
class=
"jh"
>
{{item.NavTitle}}
</span>
<!--您身边的日语-->
</div>
<div
class=
"con2"
>
这里给一点小文字介绍什么的最好,这里给一点小文字介绍什么的最好,这里给一点
小文字介绍什么的最好。
{{item.SubTitle}}
</div>
<div
class=
"con3"
></div>
<div
class=
"btn"
>
查看详情
</div>
<div
class=
"btn"
@
click=
"goDetail(item.LinkUrl)"
>
查看详情
</div>
<q-img
src=
"../assets/images/index/female.png"
spinner-color=
"white"
class=
"female"
v-if=
"item.NavTypeName=='首页'"
/>
</q-carousel-slide>
<q-carousel-slide
name=
"first3"
img-src=
"https://cdn.quasar.dev/img/mountains.jpg"
/>
<q-carousel-slide
name=
"first4"
img-src=
"https://cdn.quasar.dev/img/mountains.jpg"
/>
</q-carousel>
</div>
</div>
...
...
@@ -73,7 +73,7 @@
spinner-color=
"white"
class=
"class_icon2"
/>
<div
class=
"class_title"
>
日
标基础
课
</div>
<div
class=
"class_title"
>
日
语口语
课
</div>
<div
class=
"class_dec"
>
要是能有一些日标基础课程的小讲解就很好
了,能丰富我们的页面要是能有一些 日标基础课程的小讲解就
...
...
@@ -90,7 +90,7 @@
spinner-color=
"white"
class=
"class_icon2"
/>
<div
class=
"class_title"
>
日标基础
课
</div>
<div
class=
"class_title"
>
留学日语
课
</div>
<div
class=
"class_dec"
>
要是能有一些日标基础课程的小讲解就很好
了,能丰富我们的页面要是能有一些 日标基础课程的小讲解就
...
...
@@ -107,7 +107,7 @@
spinner-color=
"white"
class=
"class_icon2"
/>
<div
class=
"class_title"
>
日标基础
课
</div>
<div
class=
"class_title"
>
企业日语
课
</div>
<div
class=
"class_dec"
>
要是能有一些日标基础课程的小讲解就很好
了,能丰富我们的页面要是能有一些 日标基础课程的小讲解就
...
...
@@ -124,7 +124,7 @@
spinner-color=
"white"
class=
"class_icon2"
/>
<div
class=
"class_title"
>
日标基础课
</div>
<div
class=
"class_title"
>
同声传译
</div>
<div
class=
"class_dec"
>
要是能有一些日标基础课程的小讲解就很好
了,能丰富我们的页面要是能有一些 日标基础课程的小讲解就
...
...
@@ -276,15 +276,15 @@
<
script
>
import
Header
from
"../components/header/header"
;
import
Footer
from
"../components/footer/footer"
;
import
{
getWebConfig
,
getWebNavList
,
getWebNewsTypeList
}
from
"../api/indexApi.js"
;
export
default
{
name
:
"PageIndex"
,
components
:
{
Header
,
Footer
,
},
data
()
{
return
{
slide
:
"
first
"
,
slide
:
"
首页
"
,
currentMaskIndex
:
0
,
pageScroll
:
0
,
activeIdx
:
1
,
...
...
@@ -581,16 +581,16 @@ export default {
type
:
1
,
},
],
menuList
:[],
swiperList
:[]
};
},
methods
:
{
// 滚动条高度
handleScroll
()
{
this
.
pageScroll
=
document
.
documentElement
.
scrollTop
||
document
.
body
.
scrollTop
;
// console.log(this.pageScroll);
// var el = document.getElementById("elone");
// el.scrollIntoView();
},
//第三部分递增效果
startAnimate
()
{
...
...
@@ -599,11 +599,31 @@ export default {
movemask
(
i
){
this
.
currentMaskIndex
=
i
},
// 查看详情
goDetail
(
url
){
this
.
$router
.
push
(
url
)
},
//获取网站配置
async
getWebConfig
(){
let
res
=
await
getWebConfig
()
localStorage
.
setItem
(
"groupID"
,
res
.
Data
.
groupId
)
localStorage
.
setItem
(
"menuList"
,
JSON
.
stringify
(
res
.
Data
.
menuList
))
this
.
menuList
=
res
.
Data
.
menuList
},
//获取网站导航列表
async
getWebNavList
(){
let
res
=
await
getWebNavList
(
1
)
this
.
swiperList
=
res
.
Data
},
//获取新闻类型列表
async
getWebNewsTypeList
(){
let
res
=
await
getWebNewsTypeList
()
}
},
mounted
()
{
// threeAdd(this.schoolResource,"schoolResource")
// threeAdd(this.major,"major")
// threeAdd(this.servePeopleNum,"servePeopleNum")
this
.
getWebConfig
();
this
.
getWebNavList
();
this
.
getWebNewsTypeList
();
window
.
addEventListener
(
"scroll"
,
this
.
handleScroll
);
},
//销毁,否则跳到别的路由还是会出现
...
...
@@ -613,7 +633,7 @@ export default {
},
};
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
// @mixin width ($width) {
// width: calc(($width / 1920) * 100%);
// }
...
...
@@ -826,7 +846,7 @@ export default {
padding-top
:
calc
(
2377
/
1920
*
100%
);
position
:
relative
;
.subFourBox
{
width
:
100
%
;
width
:
100
vw
;
height
:
100%
;
background-image
:
url("../assets/images/index/work_serve_bg.png")
;
background-repeat
:
no-repeat
;
...
...
src/pages/studyServe/studyServe.vue
View file @
5da79659
<
template
>
<div
class=
"jiahe"
>
<Header
/>
<Banner
/>
<Header
:menuList=
"menuList"
:curMenu=
"menuList[2].Name"
:type=
"2"
/>
<Banner
:swiperList=
"swiperData"
/>
<!-- 留学产品 -->
<div
class=
"studyProduct"
>
<div
class=
"title"
>
留学产品
</div>
...
...
@@ -29,15 +29,16 @@
</div>
</div>
</div>
<TeacherTeam
:viewNum=
"3"
/>
<TeacherTeam
:viewNum=
"3"
/>
<Footer
/>
</div>
</
template
>
<
script
>
import
Header
from
"../../components/header/header
Type2
"
;
import
Header
from
"../../components/header/header"
;
import
Banner
from
"../../components/bnaner/banner"
;
import
TeacherTeam
from
"../../components/teacherTeam/teacherTeam"
;
import
Footer
from
"../../components/footer/footerType2"
;
import
{
getWebNavList
}
from
"../../api/indexApi.js"
;
export
default
{
components
:
{
Banner
,
...
...
@@ -47,6 +48,14 @@ export default {
},
data
()
{
return
{
menuList
:
[
{},
{},
{
Name
:
""
,
},
],
swiperData
:
[],
studyProductList
:
[
{
// url:require(''),
...
...
@@ -68,11 +77,22 @@ export default {
],
};
},
methods
:
{
//获取网站导航列表
async
getWebNavList
()
{
let
res
=
await
getWebNavList
(
3
);
this
.
swiperData
=
res
.
Data
;
},
},
mounted
()
{
this
.
menuList
=
JSON
.
parse
(
localStorage
.
getItem
(
"menuList"
));
this
.
getWebNavList
();
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
.jiahe
{
background-color
:
#F6F6F
6
;
.jiahe
{
background-color
:
#f6f6f
6
;
}
.studyProduct
{
width
:
62
.5vw
;
...
...
src/router/routes.js
View file @
5da79659
...
...
@@ -5,7 +5,7 @@ const routes = [
redirect
:
'/index'
,
component
:
()
=>
import
(
'layouts/MainLayout.vue'
),
children
:
[
{
path
:
'/index'
,
component
:
()
=>
import
(
'pages/Index.vue'
)
},
{
path
:
'/index'
,
component
:
()
=>
import
(
'
src/
pages/Index.vue'
)
},
{
path
:
'/JapaneseTrain'
,
component
:
()
=>
import
(
'src/pages/JapaneseTrain/JapaneseTrain.vue'
)
},
{
path
:
'/eduProductList'
,
component
:
()
=>
import
(
'src/pages/JapaneseTrain/eduProductList.vue'
)
},
{
path
:
'/eduProductDetail'
,
component
:
()
=>
import
(
'src/pages/JapaneseTrain/eduProductDetail.vue'
)
},
...
...
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