Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
confucius
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
罗超
confucius
Commits
b13dcce1
Commit
b13dcce1
authored
Mar 29, 2021
by
zhengke
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改
parent
f3f60cd6
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
1815 additions
and
1 deletion
+1815
-1
App.vue
src/App.vue
+1
-1
contract.js
src/api/sale/contract.js
+86
-0
eduinfo-form.vue
src/components/sale/eduinfo-form.vue
+144
-0
contractConfirm.vue
src/pages/contractConfirm.vue
+402
-0
contractAudit.vue
src/pages/sale/contractAudit.vue
+255
-0
contractEdit.vue
src/pages/sale/contractEdit.vue
+541
-0
contractManage.vue
src/pages/sale/contractManage.vue
+366
-0
routes.js
src/router/routes.js
+20
-0
No files found.
src/App.vue
View file @
b13dcce1
...
...
@@ -12,7 +12,7 @@ export default {
<
style
>
@import
url('~assets/css/font.css')
;
@import
url('//at.alicdn.com/t/font_2077629_
xtjfp2lxt9g
.css')
;
@import
url('//at.alicdn.com/t/font_2077629_
8mt7fp1wle5
.css')
;
html
,
body
,
...
...
src/api/sale/contract.js
0 → 100644
View file @
b13dcce1
import
request
from
'../../utils/request'
/**
* 获取日语培训列表
*
*/
export
function
GetEducationContractPageList
(
data
)
{
return
request
({
url
:
'/EducationContract/GetEducationContractPageList'
,
method
:
'post'
,
data
})
}
/**
* 获取合同详情
*
*/
export
function
GetEducationContractInfo
(
data
)
{
return
request
({
url
:
'/EducationContract/GetEducationContractInfo'
,
method
:
'post'
,
data
})
}
/**
* 保存合同
*
*/
export
function
SetEducationContractInfo
(
data
)
{
return
request
({
url
:
'/EducationContract/SetEducationContractInfo'
,
method
:
'post'
,
data
})
}
/**
* 合同操作
*
*/
export
function
SetEducationContractAudit
(
data
)
{
return
request
({
url
:
'/EducationContract/SetEducationContractAudit'
,
method
:
'post'
,
data
})
}
/**
* 合同操作-下载pdf
*
*/
export
function
GetDownLoadEducationContract
(
data
)
{
return
request
({
url
:
'/EducationContract/GetDownLoadEducationContract'
,
method
:
'post'
,
data
})
}
/**
* 合同操作-复制
*
*/
export
function
SetEducationContractCopy
(
data
)
{
return
request
({
url
:
'/EducationContract/SetEducationContractCopy'
,
method
:
'post'
,
data
})
}
/**
* 保存签名
*
*/
export
function
SetEducationContractSign
(
data
)
{
return
request
({
url
:
'/EducationContract/SetEducationContractSign'
,
method
:
'post'
,
data
})
}
src/components/sale/eduinfo-form.vue
0 → 100644
View file @
b13dcce1
<
template
>
<q-dialog
v-model=
"persistent"
content-class=
"bg-grey-1"
persistent
transition-show=
"scale"
transition-hide=
"scale"
>
<q-card
style=
"width: 800px;max-width:900px;"
>
<q-card-section>
<div
class=
"text-h6"
>
{{
objOption
.
Id
==
0
?
'新增合同'
:
'修改合同'
}}
</div>
</q-card-section>
<q-card-section
class=
"q-pt-none scroll"
style=
"max-height: 70vh"
>
<div
class=
"text-caption q-mb-lg q-px-md text-grey-6"
>
基本资料
</div>
<div
class=
"row wrap"
>
<q-select
filled
stack-label
option-value=
"Id"
option-label=
"Name"
v-model=
"objOption.CType"
ref=
"CType"
:options=
"CTypeList"
label=
"类型"
:dense=
"false"
class=
"col-6 q-pr-lg q-pb-lg"
emit-value
map-options
:rules=
"[val => !!val || '请选择所属校区']"
/>
<q-input
filled
stack-label
maxlength=
"20"
:dense=
"false"
v-model=
"objOption.StudentName"
ref=
"StudentName"
class=
"col-6 q-pb-lg"
label=
"学生姓名"
:rules=
"[val => !!val || '请填写学生姓名']"
/>
<q-input
filled
stack-label
maxlength=
"100"
:dense=
"false"
v-model=
"objOption.SchoolName"
ref=
"SchoolName"
class=
"col-6 q-pr-lg q-pb-lg"
label=
"学校名称"
:rules=
"[val => !!val || '请填写学校名称']"
/>
<q-input
filled
stack-label
maxlength=
"100"
:dense=
"false"
v-model=
"objOption.CourseName"
ref=
"CourseName"
class=
"col-6 q-pb-lg"
label=
"课程名称"
:rules=
"[val => !!val || '请填写课程名称']"
/>
<q-input
filled
stack-label
maxlength=
"300"
:dense=
"false"
v-model=
"objOption.CourseContent"
ref=
"CourseContent"
class=
"col-6 q-pr-lg q-pb-lg"
label=
"课程内容"
:rules=
"[val => !!val || '请填写课程内容']"
/>
<q-input
filled
stack-label
maxlength=
"300"
:dense=
"false"
v-model=
"objOption.CNYCaps"
ref=
"CNYCaps"
class=
"col-6 q-pb-lg"
label=
"人民币大写"
:rules=
"[val => !!val || '请填写人民币大写金额']"
/>
<q-input
filled
stack-label
:dense=
"false"
@
keyup
.
native=
"checkPrice(objOption,'Money')"
v-model=
"objOption.Money"
ref=
"Money"
class=
"col-6 q-pb-lg q-pr-lg"
label=
"金额"
:rules=
"[val => !!val || '请填写金额']"
/>
<q-input
filled
stack-label
:dense=
"false"
v-model=
"objOption.Exam"
ref=
"Exam"
class=
"col-6 q-pb-lg"
label=
"乙方当前选择考试"
/>
</div>
</q-card-section>
<q-separator
/>
<q-card-actions
align=
"right"
class=
"bg-white"
>
<q-btn
label=
"取消"
flat
color=
"grey-10"
style=
"font-weight:400 !important"
@
click=
"closeSaveForm"
/>
<q-btn
label=
"保存"
color=
"accent q-px-md"
style=
"font-weight:400 !important"
:loading=
"saveLoading"
@
click=
"saveContract"
/>
</q-card-actions>
</q-card>
</q-dialog>
</
template
>
<
script
>
import
{
SetEducationContractInfo
,
GetEducationContractInfo
}
from
'../../api/sale/contract'
export
default
{
props
:
{
setingObj
:
{
type
:
Object
,
default
:
null
}
},
data
()
{
return
{
persistent
:
true
,
objOption
:
{
Id
:
0
,
CType
:
1
,
//类型1培训 2留学
StudentName
:
''
,
//学生姓名,
SchoolName
:
''
,
//学校名称
CourseName
:
''
,
//课程名称
CourseContent
:
''
,
//课程内容
CNYCaps
:
''
,
//人民币大写
Money
:
''
,
//金额
Exam
:
''
//乙方当前选择考试
},
//类型下拉
CTypeList
:
[{
Id
:
1
,
Name
:
'培训'
},
{
Id
:
2
,
Name
:
'留学'
}],
saveLoading
:
false
,
}
},
created
()
{},
mounted
()
{
this
.
initObj
()
},
methods
:
{
//保存合同
saveContract
()
{
this
.
$refs
.
StudentName
.
validate
()
this
.
$refs
.
SchoolName
.
validate
()
this
.
$refs
.
CourseName
.
validate
()
this
.
$refs
.
CourseContent
.
validate
()
this
.
$refs
.
CNYCaps
.
validate
()
this
.
$refs
.
Money
.
validate
()
if
(
!
this
.
$refs
.
StudentName
.
hasError
&&
!
this
.
$refs
.
SchoolName
.
hasError
&&
!
this
.
$refs
.
CourseName
.
hasError
&&
!
this
.
$refs
.
CourseContent
.
hasError
&&
!
this
.
$refs
.
CNYCaps
.
hasError
&&
!
this
.
$refs
.
Money
.
hasError
)
{
SetEducationContractInfo
(
this
.
objOption
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'修改成功!'
,
position
:
'top'
})
}
this
.
$emit
(
'success'
);
})
}
},
initObj
()
{
if
(
this
.
setingObj
&&
this
.
setingObj
.
Id
>
0
)
{
GetEducationContractInfo
({
ContractId
:
this
.
setingObj
.
Id
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
var
tempObj
=
res
.
Data
;
this
.
objOption
.
Id
=
tempObj
.
Id
;
this
.
objOption
.
CType
=
tempObj
.
CType
;
this
.
objOption
.
StudentName
=
tempObj
.
StudentName
;
this
.
objOption
.
SchoolName
=
tempObj
.
SchoolName
;
this
.
objOption
.
CourseName
=
tempObj
.
CourseName
;
this
.
objOption
.
CourseContent
=
tempObj
.
CourseContent
;
this
.
objOption
.
CNYCaps
=
tempObj
.
CNYCaps
;
this
.
objOption
.
Money
=
tempObj
.
Money
;
this
.
objOption
.
Exam
=
tempObj
.
Exam
;
}
})
}
},
closeSaveForm
()
{
this
.
$emit
(
'close'
)
this
.
persistent
=
false
},
},
watch
:
{
},
}
</
script
>
<
style
>
</
style
>
src/pages/contractConfirm.vue
0 → 100644
View file @
b13dcce1
<
style
>
*
{
margin
:
0
;
padding
:
0
;
}
.TCdiv_content
{
width
:
100%
;
margin
:
0
auto
;
background-color
:
#fff
;
height
:
100%
;
-webkit-text-size-adjust
:
100%
;
-moz-text-size-adjust
:
100%
;
-ms-text-size-adjust
:
100%
;
text-size-adjust
:
100%
;
color
:
#000
;
}
.CisHideen
{
display
:
none
;
overflow
:
hidden
;
}
.contractTitle
{
font-size
:
1.2rem
;
margin-bottom
:
10px
;
}
.ContractMain
{
padding
:
15px
15px
80px
15px
;
position
:
relative
;
background
:
#fff
;
}
.CliSignDiv
{
position
:
fixed
;
border
:
1px
solid
#d1d1d1
;
width
:
100%
;
background-color
:
#fff
;
z-index
:
999
;
margin
:
auto
;
display
:
block
;
z-index
:
-999
;
}
.TcConfirmMain
.isShowSign
{
z-index
:
999
!important
;
}
.TCdiv_content
.signSpan
{
position
:
fixed
;
bottom
:
0
;
width
:
100%
;
left
:
0
;
background
:
#fff
;
border-top
:
1px
solid
#ccc
;
z-index
:
1000
;
}
.TCdiv_content
.signSpan
.sign
{
width
:
75%
;
margin
:
0
auto
;
text-align
:
center
;
cursor
:
pointer
;
height
:
60px
;
line-height
:
60px
;
}
.ContractMain
p
{
font-size
:
1rem
;
line-height
:
26px
;
margin
:
0
;
}
.con_Suojin
{
text-indent
:
20px
;
}
.comTop
{
margin-top
:
10px
;
}
.conUnderLine
{
text-decoration
:
underline
;
}
.CanvasDiv
{
width
:
100%
;
height
:
calc
(
100%
-
4rem
);
padding-top
:
5%
;
}
.dash
{
padding
:
10px
;
box-sizing
:
border-box
;
border
:
1px
dashed
#ccc
;
width
:
95%
;
height
:
98%
;
margin
:
0
auto
;
overflow
:
hidden
;
}
.CanvasDiv
#canvas
{
width
:
100%
;
height
:
100%
;
}
</
style
>
<
template
>
<div
class=
"TcConfirmMain"
>
<div
class=
"TCdiv_content"
:class=
"dialogVisible?'CisHideen':''"
>
<!-- 签字 -->
<div
class=
"signSpan"
>
<div
@
click=
"dialogVisible=true"
:class=
"dialogVisible?'CisHideen':''"
class=
"sign"
>
<span
style=
"padding:0;"
><i
style=
"font-size:1.2rem"
class=
"iconfont icon-qianming"
></i></span>
<span
style=
"font-size:1.2rem"
v-if=
"msg.Sign==''||msg.Sign==null"
>
签字
</span>
<span
style=
"font-size:1.2rem"
v-else
>
重新签字
</span>
</div>
</div>
<div
class=
"ContractMain"
>
<div
class=
"contractTitle"
>
一、声明
</div>
<p>
当您签署此协议之前,请确保已清楚了解以下事宜:
</p>
<p>
1、温馨提示:日语学习的过程中,学员的上课到勤率越高,教学成果会更好,学员达成课程学习目标的概率将会较高。
</p>
<p
class=
"con_Suojin"
>
因此,请确保您已经认真了解过该门课程的学习内容、规划与学费事宜;已充分做好了各项学习准备,真正让自己做到上课到勤率达到90%以上,努力达成既定学习目标。
</p>
<p>
2、您有一次在学习的任何阶段申请停课的权利。当您按要求正式办理相关停课手续之日起,12个月内,如无不可抗力事由,则必须按要求提出复课申请。如未按要求复课,则视作学员主动放弃继续学习的权力,终止本课程协议。
</p>
<p>
3、请您牢记全国官方唯一服务号码:028-6199-3633
</p>
<p>
4、请您认真阅读并充分理解本协议内容后签署此协议,一旦签署则视为完全理解并同意该协议内容。
</p>
<div
class=
"contractTitle comTop"
>
二、总则
</div>
<p>
成都市锦江区甲鹤外语培训学校有限公司(以下简称“甲方”)与培训学员(以下简称“乙方”)根据《中华人民共和国合同法》等法律、法规规定,双方在平等、自愿、协商一致的基础上达成此协议。
</p>
<div
class=
"contractTitle comTop"
>
三、培训课程内容
</div>
<p>
培训课程:
<span
class=
"conUnderLine"
>
大木教学
</span></p>
<p>
课程内容:
<span
class=
"conUnderLine"
>
大木教学
</span></p>
<p>
如乙方有同时学习两门或两门以上不同类别的课程要求,则乙方须分课程类别签订课程协议。
</p>
<div
class=
"contractTitle comTop"
>
四、课程费用
</div>
<p>
人民币(大写):
<span
class=
"conUnderLine"
>
123
</span>
圆
</p>
<p>
人民币(小写):
<span
class=
"conUnderLine"
>
123
</span>
元
</p>
<p>
2、支付方式:扫码支付(微信、支付宝)、POS机刷卡支付(信用卡,银行借记卡)、银行汇款/转账。
</p>
<p>
3、支付截止日期提醒:正式确认报名之日起,乙方须在7个工作日内足额缴纳学费(正式确认报名的时间以乙方缴纳定金之日为准,若乙方未缴纳定金的,以正式开课日前七个工作日为准),因课程一旦开始,同班级学员将统一安排课表持续学习,为了不打乱正常的授课计划,乙方应按本协议约定时间内足额缴纳学费,因逾期缴费所造成的课程延误或课程进度缺失,乙方自行承担责任。甲方因乙方逾期缴费而造成的损失,由乙方承担。
</p>
<div
class=
"contractTitle comTop"
>
五、双方权利与义务
</div>
<p>
1、甲方权利与义务
</p>
<p
style=
"margin-left:10px;"
>
1.1 甲方权利
</p>
<p
class=
"con_Suojin"
>
1.1.1 甲方按照甲方的教学管理制度规定对乙方实施培训管理。
</p>
<p
class=
"con_Suojin"
>
甲方按本协议约定向乙方收取课程费用
</p>
<p
class=
"con_Suojin"
>
1.1.3 如有乙方违反甲方的教学管理制度的行为,甲方有权要求乙方在规定时间内进行改善。
</p>
<p
class=
"con_Suojin"
>
1.1.4 为达到更好的教学效果,甲方根据班级成员状况、班级教学进度和教学质量情况,做好合理安排,监督并调整好授课教师的授课方式,必要时有权利为学员更换更适合的教师授课。
</p>
<p
class=
"con_Suojin"
>
1.1.5 根据班级人数状况以及学员学习进度,甲方应主动提出更优的班级组成形式的建议,必要时,经乙方同意,可适当调整乙方的班级管理(班级分组、授课形式、授课地点等)
</p>
<p
style=
"margin-left:10px;"
>
1.2 甲方义务
</p>
<p
class=
"con_Suojin"
>
1.2.1 甲方制定规范有效的培训计划,其中包括:教材(版本统一)和资料的确认;在合理期限内,通过完成教学课时,达成教学进度目标;定时测验,随时掌握班级学习情况;严格对教师和学员进行考核;甲方教师应对学员发布作业以及批改作业;甲方老师应按时协助学员安排好国际认证考试计划等。
</p>
<p
class=
"con_Suojin"
>
1.2.2 甲方依据本协议规定,指派合格的任课教师,在合理的期限内完成教学服务。
</p>
<p
class=
"con_Suojin"
>
1.2.3 甲方应当及时且有效的解决乙方通过当面咨询或拨打咨询电话等方式提出的在培训过程中遇到的与培训内容相关的问题。
</p>
<p
class=
"con_Suojin"
>
1.2.4 甲方依据乙方学习的实际情况,在收到乙方的正式书面申请之日起,在10个工作日内为乙方开具在读证明或培训证明。
</p>
<p
class=
"con_Suojin"
>
1.2.5 甲方在收到乙方免费复学申请后,需在1-2个月内安排乙方进行水平测试和复学课程,或者直接合理安排复学课程。(重要说明:乙方只有在修完所报课程,但未通过所报课程相对应级别的考试,且在参加国际认证考试之日起12个月内才有资格提出免费复学申请。)
</p>
<p>
2、乙方权利与义务
</p>
<p
style=
"margin-left:10px;"
>
2.1 乙方权利
</p>
<p
class=
"con_Suojin"
>
2.1.1 乙方有权向甲方反应其任课教师情况,如出现甲方老师不按时上课、不按教学计划上课等,乙方有权建议甲方更换培训教师或要求甲方及时规范该教师不当的上课行为。
</p>
<p
class=
"con_Suojin"
>
2.1.2 乙方修完所报课程,未通过所报课程相应级别的考试,有权在参加国际认证考试之日起12个月内向甲方提出一次免费复学申请。
</p>
<p
style=
"margin-left:10px;"
>
2.2 乙方义务
</p>
<p
class=
"con_Suojin"
>
2.2.1 为保障乙方学习效果,乙方自愿遵守甲方在本协议内指定的教学培训管理规定。
</p>
<p
class=
"con_Suojin"
>
2.2.2 为有针对性的给乙方提供更多且有效的升学、留学与就业服务,乙方须自愿服从甲方安排并参加相关国际认证考试;且乙方拿到国际认证考试成绩后,自愿将国际认证考试相关证书扫描件提交给甲方存档,并允许荣誉展示,作为学员见证资料。
</p>
<p
class=
"con_Suojin"
>
2.2.3 为监督教学过程,促使乙方最终达成学习目标,乙方应自愿参加甲方组织的相关测试,且正确率达到80%以上。
</p>
<p
class=
"con_Suojin"
>
2.2.4 因特殊原因请假,乙方应遵守以下教学管理规定。否则,将视为乙方主动放弃本阶段学习,如出现未达成考级目标的情况,乙方不再享受免费复学的权利:
</p>
<p
style=
"margin-left:20px;"
>
A,乙方应在上课前48小时以前,向甲方授课教师请假;
</p>
<p
style=
"margin-left:20px;"
>
B,乙方累计连续3个月请假总时长在6小时以内;
</p>
<p
style=
"margin-left:20px;"
>
C,乙方应在取得甲方授课教师书面形式的批准确认后方可认定请假成立;
</p>
<p
style=
"margin-left:20px;"
>
D,乙方在请假后,应找授课教师或同学补习(可线上补习)课程,完成该阶段课程的到勤。
</p>
<p
class=
"con_Suojin"
>
2.2.5 乙方必须保证上课到勤率在90%以上,并亲自确认签到情况,不得无故缺勤、迟到和早退,否则,将视为乙方主动放弃本阶段学习,如出现未达成考级目标的情况,乙方不再享有免费复学的权利。
</p>
<p
class=
"con_Suojin"
>
2.2.6 上课时,乙方应尊重甲方教师,不得出现接听电话、随意走动、饮食、抽烟、打牌或看与课程无关的书籍资料等行为。
</p>
<p
class=
"con_Suojin"
>
2.2.7 乙方无权将培训资料用作任何商业用途,否则,对造成甲方的直接或间接损失,乙方应当全额赔偿。
</p>
<p
class=
"con_Suojin"
>
2.2.8 非由甲方原因导致的乙方学习成绩未进步的后果,由乙方自己承担;乙方未服从甲方的教学管理要求,导致安全事故的责任后果,由乙方自己承担。
</p>
<p
class=
"con_Suojin"
>
2.2.9 乙方应按照本协议约定,按时足额缴纳学费,开课后延迟支付的(未按时支付学费和支付部分学费均为延迟支付),在7个工作日内,甲方有权要求乙方按照10元/天的标准支付违约金;乙方延迟7个工作日以上的情况下,甲方有权单方面解除本协议,并要求乙方按照200元/天的标准支付违约金。
</p>
<div
class=
"contractTitle comTop"
>
六、课程培训与服务的管理规定
</div>
<p>
1、语言培训课程内容与考试要求
</p>
<p
style=
"margin-left:10px;"
>
1.1 甲方将按照本协议第三条“培训课程内容”为乙方提供教学服务
</p>
<p
style=
"margin-left:10px;"
>
1.2 乙方通过参加甲方提供的教学服务后,应主动参加相关国际考试。考试内容为:
</p>
<p
class=
"con_Suojin"
>
A 日语国际能力测试(JLPT):初级(N5-N4)、中级(N3-N2)、高级(N1);
</p>
<p
class=
"con_Suojin"
>
B 实用日本语鉴定考试(J.TEST):初级(E-F级)、中高级(A-D级);
</p>
<p
class=
"con_Suojin"
>
C 日本留学生考试(EJU):文科(日语)、综合科目、数学。
</p>
<p
style=
"margin-left:10px;"
>
1.3 乙方当前选择考试:
</p>
<p>
2、高级课程增值课程特别条款
</p>
<p
style=
"margin-left:10px;"
>
2.1 乙方在报名高级课程后,有机会参加以下增值课程:
</p>
<p
class=
"con_Suojin"
>
2.1.1 乙方通过甲方面试后,有权申请参加甲方组织的“成长训练营培训”、“周末沙龙”等培训活动。
</p>
<p
class=
"con_Suojin"
>
2.1.2 乙方达到所学语言的高级水平后,并且通过甲方面试,有权申请参加甲方组织的“精品教师培训”、“精品导游培训”。
</p>
<p
class=
"con_Suojin"
>
2.1.3 以上两种培训资格有效期为6个月,即乙方报名增值课程且面试通过之日起6个月之内有效。逾期将视为主动放弃上述学习机会。
</p>
<p
style=
"margin-left:10px;"
>
2.2 该增值课程属于甲方有偿提供给高级课程学员的课程,乙方报名参加该增值课程不得因任何原因要求甲方返还增值课程费用。
</p>
<p
style=
"margin-left:10px;"
>
2.3 乙方自愿选择参加甲方提供的增值课程,自甲方发布报名通知后的规定时间内,乙方均可向甲方指定的工作人员报名参加,逾期未报名的视为放弃参加增值课程。
</p>
<p
style=
"margin-left:10px;"
>
2.4 该增值课程可能涉及到户外活动,乙方报名该增值课程后因个人身体原因不适合继续参加的,乙方有义务告知甲方实际情况,经甲方同意后方可退出,且甲方不承担与此相关的任何责任。
</p>
<p
style=
"margin-left:10px;"
>
2.5 在该增值课程中,乙方应当服从甲方的组织和管理,非因甲方原因造成的乙方人身财产损害,甲方不承担任何责任,由于乙方原因导致第三方人身财产损害,甲方不承担任何责任,若甲方因乙方原因而对第三方承担责任的,甲方有权向乙方追偿。
</p>
<p
style=
"margin-left:10px;"
>
2.6 关于增值课程的最终解释权归甲方所有。
</p>
<div
class=
"contractTitle comTop"
>
七、日语导游培训管理规定
</div>
<div
class=
"contractTitle comTop"
>
特别提示:本条款仅适用于报名参加“日语导游培训课程”的学员,因每年日语导游培训课程人数有限,报完为止。
</div>
<p>
1、乙方报名日语导游培训课程,且缴清该课程全部学费之后,日语达到N3水平,有资格参加甲方安排的导游培训,如乙方不参加培训的,须书面向甲方提出申请,否则甲方视为其主动放弃培训机会,甲方不承担任何责任。
</p>
<p>
2、乙方参加导游证培训,自报名之日起,有效期为一年,逾期视为乙方自动放弃学习机会,甲方不承担任何责任。
</p>
<p>
3、日语导游证培训时间和课程安排由甲方指定,当乙方达到日语N3水平,甲方教师将会通知乙方相关培训与考试的具体时间和注意事项。
</p>
<p>
4、日语导游培训课程仅限乙方本人申请参加导游证的培训,不得转让第三方,亦不得折现等。
</p>
<p>
5、如果乙方在日语导游证考试中未取得相应证书,乙方可在考试后12个月内免费进行一次日语导游培训课程的复学。
</p>
<p>
6、乙方同时满足以下条件时,在乙方自愿的情况下,甲方负责乙方在甲方公司获得就业机会,甲方为乙方缴纳社保及各项补助金。
</p>
<p
style=
"margin-left:10px;"
>
6.1 日语水平达到N2及以上;
</p>
<p
style=
"margin-left:10px;"
>
6.2 独立带团8次或以上;
</p>
<p
style=
"margin-left:10px;"
>
6.3 持有日语导游证;
</p>
<p
style=
"margin-left:10px;"
>
6.4 完整参加甲方安排的导游培训,且考试合格;
</p>
<p
style=
"margin-left:10px;"
>
6.5 自愿与甲方签订三年及以上劳动协议;
</p>
<p
style=
"margin-left:10px;"
>
6.6 乙方拿到甲方公司就业同意书,办理入职期限为甲方提供就业同意书之日起6个月内,乙方逾期办理则视为其主动放弃在甲方就业的机会,甲方不承担任何责任。
</p>
<p>
7、关于日语导游培训课程的最终解释权归甲方所有。
</p>
<div
class=
"contractTitle comTop"
>
八、日本留学课程管理规定
</div>
<div
class=
"contractTitle comTop"
>
特别提示:本条款仅适用于报名参加“日本留学课程”的学员。
</div>
<p>
1、日本留学课程是甲方根据乙方的留学学校及留学专业要求,结合乙方自身条件,协助乙方前往日本大学或优质语言学校进行学习的课程。该课程内容包含:
</p>
<p
style=
"margin-left:10px;"
>
A 大学或大学院入学考试辅导(若乙方申请为语言学校,该课程则为日本留学生考试—EJU课程辅导)
</p>
<p
style=
"margin-left:10px;"
>
B 面试辅导
</p>
<p>
2、除课程内容外,甲方负责内容包含:学生入学规划、学校筛选、专业筛选、研究计划书辅导、导师沟通、面试稿编写(若需要)、取得研究生内定资格、出愿材料准备、材料审核、取得入学合格通知书、宿舍申请、在留资格资料的准备和审查、取得在留资格认证。乙方需自行承担往返机票费、签证费、入学金、乙方出境前从本城至机场的往返路费、到达日本后的交通费、住宿费等。
</p>
<p>
本规定仅作为课程内容确认使用,留学服务具体细节请另行签订留学协议。
</p>
<p>
3、关于日语导游培训课程的最终解释权归甲方所有。
</p>
<div
class=
"contractTitle comTop"
>
九、插班、请假、复课、合并班的教学培训管理
</div>
<p>
1、插班
</p>
<p
style=
"margin-left:10px;"
>
1.1 插班是指乙方在甲方开班以后报名学习,插入班级上课。
</p>
<p
style=
"margin-left:10px;"
>
1.2 因乙方自身原因跟不上进度,应及时向甲方老师报备,甲方根据乙方实际学习情况安排乙方到适合的班级上课。
</p>
<p
style=
"margin-left:10px;"
>
1.3 乙方发现所插入班级,难易程度仍不适合本人,应立即与甲方沟通,甲方须及时再次合理安排。
</p>
<p>
2、请假
</p>
<p>
请假是指乙方因正当原因无法正常上课,可向甲方老师申请请假,正当原因仅限如下情况:
</p>
<p
style=
"margin-left:10px;"
>
2.1 乙方因不可抗力因素如:自然灾害、国家政策调整、战争、政府禁令等造成的双方不能正常上课的;
</p>
<p
style=
"margin-left:10px;"
>
2.2 乙方因身体原因导致无法正常上课的(须开具正规医院相关证明);
</p>
<p
style=
"margin-left:10px;"
>
2.3 所报课程上课时间与学校课程或者校方安排冲突的(须开具校方证明);
</p>
<p
style=
"margin-left:10px;"
>
2.4 乙方正常请假后,可要求甲方老师保留学习资料,并及时与老师协商进行补课安排。同时,乙方须按时参加甲方老师安排的补课,并且完成甲方老师布置的补课任务,完成到勤;
</p>
<p
style=
"margin-left:10px;"
>
2.5 乙方未请假或者未按照要求请假的,甲方有权默认乙方已上课,有权拒绝提供请假期间的学习资料及补课要求。同时,请假期间课时按照正常上课进行计费。
</p>
<p>
3、停课、复课
</p>
<p
style=
"margin-left:10px;"
>
3.1 因乙方自身原因导致无法上课,乙方有权向甲方提出停课申请,乙方须主动签订停课协议,停课期限最长不得超过12个月,在需要复课时,乙方须提前向甲方书面申请复课,甲方予以办理复课手续;停课期限届满未复课的,视为乙方主动放弃该课程学习,将自动终止本课程协议,甲方不承担任何退课退费责任。
</p>
<p
style=
"margin-left:10px;"
>
3.2 因乙方自身原因导致连续12个课时不按时出勤,乙方需书面向甲方申请停课,否则将视为乙方自动停课,甲方不承担任何退课退费责任,自动停课日起12个月内,乙方如需复课,需书面向甲方提出复课申请,甲方予以办理复课。
</p>
<p
style=
"margin-left:10px;"
>
3.3 乙方停课期间,甲方每半年通知乙方复课一次,请乙方保持通讯畅通,如若更换联系方式时,乙方应立即通知甲方,否则因此导致的所有责任与后果由乙方自行承担。
</p>
<p
style=
"margin-left:10px;"
>
3.4 乙方复课时,甲方根据乙方实际学习进度情况,安排乙方进入合适的班级学习,甲方保证乙方复课课程与乙方原听课课程教学内容基本一致。
</p>
<p
style=
"margin-left:10px;"
>
3.5 乙方办理停课后,如因乙方自身原因在12个月后仍无法进行复课的,责任由乙方自行承担,甲方不承担任何责任。
</p>
<p>
4、合并班
</p>
<p>
甲方将根据教学进度需要,班级进度,教师离职或转岗、进修等情况进行班级的合并与拆分,属于正常教学工作,甲方将尽力做好班级交接工作,乙方应予以积极的配合。
</p>
<div
class=
"contractTitle comTop"
>
十、退费条款
</div>
<p>
1、因不可抗力因素如:自然灾害、国家政策调整、战争、政府禁令等造成的双方不能履行合同义务的,甲方将根据乙方实际上课情况计算费用,将剩余课程学费退还乙方。
</p>
<p>
2、乙方如若办理停课或自动停课,可在首次自动停课之日起或学员申请停课之日起,12个月内办理复课,但无权申请退费。
</p>
<p>
3、若乙方在课程未结束时就通过课程对应的级别考试,并且取得相应证书,乙方可以选择继续完成后续课程学习,或者自动放弃后续课程学习,无权申请退费。
</p>
<p>
4、若乙方出现转让课时或让其他人顶替上课的行为,一经甲方发现,甲方有权取消乙方学习资格,同时视为乙方自动放弃该课程,无权申请退费。
</p>
<p>
5、因乙方自身原因导致无法上课,且有正当理由(正当理由是指:上诉不可抗力因素、出国留学、不在本地学习、长期外地工作实习等,均需要提供相应证明),乙方有权提出终止合同,甲方须给乙方办理退课、退费(详见十一.9条)。
</p>
<p>
6、因乙方自身原因导致无法上课,但非正当理由(正当理由是指:上诉不可抗力因素、出国留学、不在本地学习、长期外地工作实习等,均需要提供相应证明),乙方无权申请退费,但可向甲方提出建议或向甲方申请办理停课,甲方根据实际情况提供妥善解决方案。
</p>
<p>
7、若乙方在报名任意一门甲方提供的课程(三.培训课程内容):
</p>
<p
style=
"margin-left:10px;"
>
7.1 享受了甲方提供的课程学费优惠活动、奖学金活动、学习优惠等,均无权申请退费。
</p>
<p
style=
"margin-left:10px;"
>
7.2 办理了甲方提供的境外学习等相关手续,需要家庭有一定的财力证明,如因个人原因不能出具相关证明,无法出行者,无权申请退费。
</p>
<p>
8、若乙方报名甲方课程,在缴纳学费时已享受了学费优惠后,又申请退费的情况,乙方必须符合以下情况方能作为正常退费要求:
</p>
<p
style=
"margin-left:10px;"
>
8.1 自然灾害等不可抗力的情况;
</p>
<p
style=
"margin-left:10px;"
>
8.2 出国留学的情况(需开具境外大学录取通知书及出行机票);
</p>
<p
style=
"margin-left:10px;"
>
8.3 不在本地学习的情况(需开具相关证明);
</p>
<p
style=
"margin-left:10px;"
>
8.4 长期外地工作实习的情况(需开具工作证明)。
</p>
<p>
9、达到正常退费要求者,退费金额核算如下:
</p>
<p
style=
"margin-left:10px;"
>
9.1 未参加抽奖等优惠活动者:应退学费=乙方已缴总学费-已上课程学费-(乙方已缴总学费-已上课程学费)×10%。其中“(乙方已缴总学费-已上课程学费)×10%”为违约金;课程中附赠的口语课程、考前冲刺课程、真题讲解等课程不纳入退费课时,乙方无权针对该课程申请退费;班级课时剩余计算方法按照班级学费平均到每小时计算。
</p>
<p
style=
"margin-left:10px;"
>
9.2 参加各项抽奖等优惠活动者,一律不予退费。
</p>
<p
style=
"margin-left:10px;"
>
9.3 因乙方自身原因(如未达到留学或旅游所对应的语言水平,且非上述十.8条不可抗力因素)不能参加境外留学、游学或旅游项目的,不予退还境外服务费。
</p>
<p
style=
"margin-left:10px;"
>
9.4 满足正常退费要求的学员,境外留学、游学、旅游费用除去上述条款十.9.3外,余额部分应退还给乙方。
</p>
<div
class=
"contractTitle comTop"
>
十一、其他责任
</div>
<p>
1、乙方对甲方提供的培训服务不满意,要求改进教学方法或者更换培训老师的,甲方应考虑乙方要求的合理性,并提供相应解决方案,但因培训老师的个人差异,乙方应理解解决方案,不能完全满足个人要求。
</p>
<p>
2、乙方严重违反本协议约定的相关管理制度或干扰甲方教学培训管理规定时,甲方可单方面解除本协议,并且不退还任何费用。
</p>
<div
class=
"contractTitle comTop"
>
十二、合同争议解决方式
</div>
<p>
1、本合同在履行过程中发生争议的,由双方当事人协商解决;协商不成的,可向甲方公司注册地仲裁委员会申请仲裁。
</p>
<p>
2、本合同自乙方缴纳全额课程学费及签订协议之日起,36个月内有效,到期后本合同甲乙双方各项权益自动终止。
</p>
<p>
3、本合同未尽事宜,由双方约定后签订补充协议等附件,补充协议及合同附件与本合同具有同等法律效力。
</p>
<p>
4、本合同及其附件内,空格部分填写的文字与印刷文字具有同等法律效力。
</p>
<p>
5、本合同正本一式两份,甲乙双方各持一份,具有同等法律效力。
</p>
<p>
6、本合同自乙方缴纳全额课程学费及签订协议之日起正式生效。
</p>
<p>
7、本合同协议部分到此为止,以下为空白。
</p>
<div
style=
"margin:10px 0;"
>
甲方签字(盖章):
</div>
<div
style=
"margin:10px 0;"
>
2020年12月1日
</div>
<div
style=
"margin:10px 0;"
>
乙方签字(盖章):
</div>
<div>
2020年12月1日
</div>
</div>
</div>
<div
class=
"CliSignDiv"
:class=
"dialogVisible?'isShowSign':''"
@
touchmove
.
prevent
>
<div
class=
"CliSignDiv"
style=
"height:100%;background:#fff;z-index:100"
>
<div
class=
"CanvasDiv"
>
<div
class=
"dash"
>
<div
id=
"canvas"
style=
"position:relative;top:0;"
>
</div>
</div>
</div>
<div
class=
"bottom"
style=
"text-align:center;height:60px;line-height:60px"
>
<el-row>
<el-col
:span=
"12"
>
<div
style=
"width:100%;"
@
click=
"handelClearEl()"
>
<span
style=
"font-size:1.2rem;color:rgb(36, 173, 229)"
class=
"iconfont icon-zhongzhi"
></span>
<span
style=
"font-size:1.2rem"
>
重置签名
</span>
</div>
</el-col>
<el-col
:span=
"12"
>
<div
style=
"width:100%;"
@
click=
"handelSaveEl()"
>
<span
style=
"font-size:1.2rem;color:rgb(36, 173, 229)"
class=
"iconfont icon-dagou"
></span>
<span
style=
"font-size:1.2rem"
>
完成签名
</span>
</div>
</el-col>
</el-row>
</div>
</div>
</div>
</div>
</
template
>
<
script
>
import
moment
from
'moment'
let
canvas
=
document
.
createElement
(
"canvas"
);
let
cxt
=
canvas
.
getContext
(
"2d"
);
import
{
SetEducationContractSign
}
from
'../api/sale/contract'
export
default
{
data
()
{
return
{
dataList
:
[],
dialogVisible
:
false
,
linewidth
:
5
,
//线条粗细,选填
color
:
"black"
,
//线条颜色,选填
background
:
"#fff"
,
//线条背景,选填
msg
:
{
ContractId
:
0
,
Sign
:
''
}
};
},
created
()
{
},
methods
:
{
//获取数据
getList
()
{
},
getCanvas
()
{
let
el
=
document
.
getElementById
(
"canvas"
);
el
.
appendChild
(
canvas
);
canvas
.
width
=
el
.
clientWidth
;
canvas
.
height
=
el
.
clientHeight
;
//cxt.fillStyle = this.background; //填充绘图的背景颜色
cxt
.
fillStyle
=
'rgba(255, 255, 255, 0)'
;
cxt
.
fillRect
(
0
,
0
,
canvas
.
width
,
canvas
.
height
);
//绘制“已填色”的矩形
cxt
.
strokeStyle
=
this
.
color
;
//笔触的颜色
cxt
.
lineCap
=
"round"
;
//线条末端线帽的样式
let
linewidth
=
this
.
linewidth
;
//开始绘制
canvas
.
addEventListener
(
"touchstart"
,
function
(
e
)
{
cxt
.
beginPath
();
cxt
.
lineWidth
=
linewidth
;
//当前线条的宽度,以像素计
cxt
.
moveTo
(
e
.
changedTouches
[
0
].
pageX
,
e
.
changedTouches
[
0
].
pageY
);
}.
bind
(
this
),
false
);
//绘制中
canvas
.
addEventListener
(
"touchmove"
,
function
(
e
)
{
cxt
.
lineTo
(
e
.
changedTouches
[
0
].
pageX
,
e
.
changedTouches
[
0
].
pageY
);
cxt
.
stroke
();
}.
bind
(
this
),
false
);
//结束绘制
canvas
.
addEventListener
(
"touchend"
,
function
()
{
cxt
.
closePath
();
}.
bind
(
this
),
false
);
},
handelClearEl
()
{
cxt
.
clearRect
(
0
,
0
,
canvas
.
width
,
canvas
.
height
);
},
handelSaveEl
()
{
let
imgBase64
=
canvas
.
toDataURL
();
this
.
msg
.
Sign
=
imgBase64
;
this
.
msg
.
ContractId
=
this
.
$route
.
query
.
ContractId
;
this
.
SaveMsg
();
},
//提交数据
SaveMsg
()
{
SetEducationContractSign
(
this
.
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
}
})
},
},
mounted
()
{
this
.
getList
();
this
.
getCanvas
();
}
};
</
script
>
src/pages/sale/contractAudit.vue
0 → 100644
View file @
b13dcce1
<
style
>
</
style
>
<
template
>
<div
class=
"page-body"
>
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col-3"
>
<q-input
@
change=
"resetSearch"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.OrderId"
label=
"订单id"
@
clear=
"resetSearch"
maxlength=
"30"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.CType"
:options=
"CTypeList"
emit-value
map-options
label=
"类型"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
standout=
"bg-primary text-white"
v-model=
"msg.Status"
:options=
"StatusOpts"
option-value=
"Id"
option-label=
"Name"
label=
"状态"
emit-value
map-options
/>
</div>
<div
class=
"col-3"
>
<q-input
@
change=
"resetSearch"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.ContractNo"
label=
"合同编号"
@
clear=
"resetSearch"
maxlength=
"30"
/>
</div>
<div
class=
"col-3"
>
<q-input
@
change=
"resetSearch"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.StudentName"
label=
"学生姓名"
@
clear=
"resetSearch"
maxlength=
"30"
/>
</div>
</div>
</div>
<div
class=
"page-content"
>
<q-table
:pagination=
"msg"
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
class=
"sticky-column-table"
separator=
"none"
title=
"合同信息"
:data=
"dataList"
:columns=
"columns"
row-key=
"name"
>
<template
v-slot:top=
"props"
>
<div
class=
"col-2 q-table__title"
>
合同信息
</div>
<q-space
/>
</
template
>
<
template
v-slot:body-cell-CreateByName=
"props"
>
<q-td
:props=
"props"
>
<q-avatar
rounded
size=
"sm"
v-if=
"props.row.CreateByPhoto"
>
<img
:src=
"props.row.CreateByPhoto"
/>
</q-avatar>
<q-avatar
rounded
size=
"sm"
color=
"teal-10"
text-color=
"white"
v-if=
"!props.row.CreateByPhoto"
>
{{
props
.
value
.
substring
(
0
,
1
)
}}
</q-avatar>
{{
props
.
row
.
CreateByName
}}
</q-td>
</
template
>
<
template
v-slot:body-cell-StudentName=
"props"
>
<q-td
auto-width
:props=
"props"
>
<span
v-if=
"props.row.Sign"
style=
"color:#e95252;"
>
【
{{
props
.
row
.
Sign
}}
】
</span>
<span
v-else
style=
"color:#e95252;"
>
【未签字】
</span>
{{
props
.
row
.
StudentName
}}
</q-td>
</
template
>
<
template
v-slot:body-cell-Status=
"props"
>
<q-td
auto-width
:props=
"props"
>
<span
v-if=
"props.row.Status==1"
style=
"color:#409EFF;"
>
待审核
</span>
<span
v-if=
"props.row.Status==2"
style=
"color:#67C23A;"
>
审合通过
</span>
<span
v-if=
"props.row.Status==3"
style=
"color:#F56C6C;"
>
已驳回
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-IsCompanySeal=
"props"
>
<q-td
auto-width
:props=
"props"
>
<span
v-if=
"props.row.IsCompanySeal==0"
style=
"color:#e95252;"
>
未盖章
</span>
<span
v-if=
"props.row.IsCompanySeal==1"
style=
"color:#67C23A;"
>
已盖章
</span>
</q-td>
</
template
>
<
template
v-slot:bottom
>
<q-pagination
class=
"full-width justify-end"
v-model=
"msg.pageIndex"
color=
"primary"
:max=
"pageCount"
:input=
"true"
@
input=
"changePage"
/>
</
template
>
<
template
v-slot:body-cell-optioned=
"props"
>
<q-td
:props=
"props"
>
<div>
<q-btn
flat
size=
"xs"
icon=
"edit"
color=
"accent"
style=
"font-weight:400"
@
click=
"operationContract(props.row,2)"
label=
"审核通过"
/>
<q-btn
flat
size=
"xs"
icon=
"edit"
color=
"accent"
style=
"font-weight:400"
@
click=
"operationContract(props.row,3)"
label=
"驳回"
/>
<q-btn
flat
size=
"xs"
icon=
"edit"
color=
"accent"
v-if=
"props.row.IsCompanySeal==0"
style=
"font-weight:400"
@
click=
"operationContract(props.row,5)"
label=
"盖章"
/>
<q-btn
flat
size=
"xs"
icon=
"iconfont icon-View"
color=
"accent"
@
click=
"goContract(props.row)"
style=
"font-weight:400"
label=
"查看"
/>
</div>
</q-td>
</
template
>
</q-table>
</div>
</div>
</template>
<
script
>
import
{
GetEducationContractPageList
,
SetEducationContractAudit
}
from
'../../api/sale/contract'
export
default
{
meta
:
{
title
:
"合同审核"
},
components
:
{
},
data
()
{
return
{
columns
:
[{
name
:
'ContractNo'
,
label
:
'合同编号'
,
align
:
'left'
,
field
:
'ContractNo'
,
},
{
name
:
'StudentName'
,
label
:
'学生名称'
,
field
:
'StudentName'
,
align
:
'left'
},
{
name
:
'CourseName'
,
label
:
'课程名称'
,
align
:
'left'
,
field
:
'CourseName'
},
{
name
:
'CTypeName'
,
label
:
'状态'
,
align
:
'left'
,
field
:
'CTypeName'
},
{
name
:
'CourseContent'
,
label
:
'课程内容'
,
align
:
'left'
,
field
:
'CourseContent'
},
{
name
:
'CreateByName'
,
label
:
'创建人'
,
align
:
'left'
,
field
:
'CreateByName'
},
{
name
:
'Status'
,
label
:
'合同状态'
,
align
:
'left'
,
field
:
'Status'
},
{
name
:
'IsCompanySeal'
,
label
:
'是否盖章'
,
align
:
'left'
,
field
:
'Status'
},
{
name
:
'optioned'
,
label
:
'操作'
,
field
:
'RoomId'
}
],
loading
:
true
,
msg
:
{
pageIndex
:
1
,
pageSize
:
12
,
rowsPerPage
:
12
,
OrderId
:
0
,
//订单id
CType
:
0
,
//1培训 2留学
Status
:
1
,
//0草稿 1提交审核 2审核通过 3驳回 4取消
ContractNo
:
''
,
//合同编号
StudentName
:
''
//学生姓名
},
pageCount
:
0
,
dataList
:
[],
//类型下拉
CTypeList
:
[{
Id
:
0
,
Name
:
'不限'
},{
Id
:
1
,
Name
:
'培训'
},
{
Id
:
2
,
Name
:
'留学'
}],
//状态下拉
StatusOpts
:
[{
Id
:
1
,
Name
:
'待审'
},{
Id
:
2
,
Name
:
'审核通过'
},
{
Id
:
3
,
Name
:
'驳回'
}],
}
},
created
()
{
},
mounted
()
{
this
.
getList
()
},
methods
:
{
//获取校区列表
getList
()
{
this
.
loading
=
true
;
GetEducationContractPageList
(
this
.
msg
).
then
(
res
=>
{
this
.
loading
=
false
;
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
.
PageData
;
this
.
pageCount
=
res
.
Data
.
PageCount
;
console
.
log
(
res
,
'数据'
);
}
})
},
//重新查询
resetSearch
()
{
this
.
msg
.
pageIndex
=
1
;
this
.
getList
();
},
//分页改变
changePage
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getList
();
},
//跳转至编辑
goContract
(
item
){
this
.
$router
.
push
({
path
:
'contractEdit'
,
query
:
{
"Id"
:
item
.
Id
}
})
},
//合同操作
operationContract
(
item
,
type
){
let
msg
=
{
ContractId
:
item
.
Id
,
State
:
type
}
SetEducationContractAudit
(
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'修改成功!'
,
position
:
'top'
})
this
.
getList
();
}
})
}
},
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
src/pages/sale/contractEdit.vue
0 → 100644
View file @
b13dcce1
<
style
>
.contractEdit
{
width
:
1200px
;
margin
:
auto
;
padding
:
20px
;
color
:
#000
;
overflow
:
auto
;
}
.contractEdit
::-webkit-scrollbar
{
width
:
3px
;
height
:
3px
;
background-color
:
#F5F5F5
;
}
/*!*定义滚动条轨道 内阴影+圆角*!*/
.contractEdit
::-webkit-scrollbar-track
{
-webkit-box-shadow
:
inset
0
0
6px
rgba
(
0
,
0
,
0
,
0.3
);
border-radius
:
10px
;
background-color
:
#F5F5F5
;
}
/*!*定义滑块 内阴影+圆角*!*/
.contractEdit
::-webkit-scrollbar-thumb
{
border-radius
:
10px
;
-webkit-box-shadow
:
-webkit-gradient
(
linear
,
0
0
,
0
100%
,
color-stop
(
.5
,
rgba
(
255
,
255
,
255
,
.2
)),
color-stop
(
.5
,
transparent
),
to
(
transparent
));
background-color
:
#0ae
;
}
.contractTitle
{
font-weight
:
bold
;
font-size
:
25px
;
width
:
100%
;
text-align
:
center
}
.contractCompany
{
width
:
100%
;
text-align
:
center
;
margin-top
:
10px
;
font-size
:
20px
;
}
.ConFtitle
{
font-size
:
18px
;
margin
:
20px
0
10px
0
;
font-weight
:
bold
;
}
.Con_Normal
{
font-size
:
18px
;
margin-bottom
:
10px
;
line-height
:
35px
;
}
.Con_Suojin
{
text-indent
:
30px
;
line-height
:
35px
;
}
.contractInput
{
border
:
0
;
display
:
inline-block
;
border-bottom
:
1px
solid
#c0c0c0
;
width
:
300px
;
font-size
:
16px
;
}
.Con_Suojin50
{
text-indent
:
50px
;
}
.Con_Gaizhang
{
display
:
flex
;
justify-content
:
space-between
;
margin-top
:
60px
;
}
</
style
>
<
template
>
<div
class=
"page-body"
>
<div
class=
"contractEdit"
:style=
"
{'height':windowHeight-120+'px'}">
<div
class=
"contractTitle"
>
培训课程协议
</div>
<div
class=
"contractCompany"
>
<span
v-if=
"dataList.BranchNList&&dataList.BranchNList.length>0"
v-for=
"(item,index) in dataList.BranchNList"
:key=
"index"
>
{{
item
}}
</span>
</div>
<div
class=
"ConFtitle"
>
一、声明
</div>
<div
class=
"Con_Normal"
>
当您签署此协议之前,请确保已清楚了解以下事宜:
</div>
<div
class=
"Con_Normal"
>
1、温馨提示:日语学习的过程中,学员的上课到勤率越高,教学成果会更好,学员达成课程学习目标的概率将会较高。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
因此,请确保您已经认真了解过该门课程的学习内容、规划与学费事宜;已充分做好了各项学习准备,真正让自己做到上课到勤率达到90%以上,努力达成既定学习目标。
2、您有一次在学习的任何阶段申请停课的权利。当您按要求正式办理相关停课手续之日起,12个月内,如无不可抗力事由,则必须按要求提出复课申请。如未按要求复课,则视作学员主动放弃继续学习的权力,终止本课程协议。
</div>
<div
class=
"Con_Normal"
>
3、请您牢记全国官方唯一服务号码:028-6199-3633
</div>
<div
class=
"Con_Normal"
>
4、请您认真阅读并充分理解本协议内容后签署此协议,一旦签署则视为完全理解并同意该协议内容。
</div>
<div
class=
"ConFtitle"
>
二、总则
</div>
<div
class=
"Con_Normal"
>
成都市锦江区甲鹤外语培训学校有限公司(以下简称“甲方”)与培训学员(以下简称“乙方”)根据《中华人民共和国合同法》等法律、法规规定,双方在平等、自愿、协商一致的基础上达成此协议。
</div>
<div
class=
"ConFtitle"
>
三、培训课程内容
</div>
<div
class=
"Con_Normal"
>
培训课程:
<div
class=
"contractInput"
>
{{
dataList
.
CourseName
}}
</div>
<span
style=
"margin-left:50px;"
>
课程内容:
</span><div
class=
"contractInput"
>
{{
dataList
.
CourseContent
}}
</div>
</div>
<div
class=
"Con_Normal"
>
如乙方有同时学习两门或两门以上不同类别的课程要求,则乙方须分课程类别签订课程协议。
</div>
<div
class=
"ConFtitle"
>
四、课程费用
</div>
<div
class=
"Con_Normal"
>
1、费用总计:以乙方选择课程之时,即时公布的课程收费标准为准。
</div>
<div
class=
"Con_Normal"
>
<div>
人民币(大写):
<div
class=
"contractInput"
>
{{
dataList
.
CNYCaps
}}
</div>
圆
</div>
<div
style=
"margin-top:10px;"
>
人民币(小写):
<div
class=
"contractInput"
>
{{
dataList
.
Money
}}
</div>
元
</div>
</div>
<div
class=
"Con_Normal"
>
2、支付方式:扫码支付(微信、支付宝)、POS机刷卡支付(信用卡,银行借记卡)、银行汇款/转账。
</div>
<div
class=
"Con_Normal"
>
3、支付截止日期提醒:正式确认报名之日起,乙方须在7个工作日内足额缴纳学费(正式确认报名的时间以乙方缴纳定金之日为准,若乙方未缴纳定金的,以正式开课日前七个工作日为准),因课程一旦开始,同班级学员将统一安排课表持续学习,为了不打乱正常的授课计划,乙方应按本协议约定时间内足额缴纳学费,因逾期缴费所造成的课程延误或课程进度缺失,乙方自行承担责任。甲方因乙方逾期缴费而造成的损失,由乙方承担。
</div>
<div
class=
"ConFtitle"
>
五、双方权利与义务
</div>
<div
class=
"Con_Normal"
>
1、甲方权利与义务
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
1.1 甲方权利
</div>
<div
class=
"Con_Normal Con_Suojin"
>
1.1.1 甲方按照甲方的教学管理制度规定对乙方实施培训管理。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
1.1.2 甲方按本协议约定向乙方收取课程费用。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
1.1.3 如有乙方违反甲方的教学管理制度的行为,甲方有权要求乙方在规定时间内进行改善。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
1.1.4 为达到更好的教学效果,甲方根据班级成员状况、班级教学进度和教学质量情况,做好合理安排,监督并调整好授课教师的授课方式,必要时有权利为学员更换更适合的教师授课。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
1.1.5 根据班级人数状况以及学员学习进度,甲方应主动提出更优的班级组成形式的建议,必要时,经乙方同意,可适当调整乙方的班级管理(班级分组、授课形式、授课地点等)
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
1.2 甲方义务
</div>
<div
class=
"Con_Normal Con_Suojin"
>
1.2.1
甲方制定规范有效的培训计划,其中包括:教材(版本统一)和资料的确认;在合理期限内,通过完成教学课时,达成教学进度目标;定时测验,随时掌握班级学习情况;严格对教师和学员进行考核;甲方教师应对学员发布作业以及批改作业;甲方老师应按时协助学员安排好国际认证考试计划等。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
1.2.2 甲方依据本协议规定,指派合格的任课教师,在合理的期限内完成教学服务。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
1.2.3 甲方应当及时且有效的解决乙方通过当面咨询或拨打咨询电话等方式提出的在培训过程中遇到的与培训内容相关的问题。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
1.2.4 甲方依据乙方学习的实际情况,在收到乙方的正式书面申请之日起,在10个工作日内为乙方开具在读证明或培训证明。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
1.2.5
甲方在收到乙方免费复学申请后,需在1-2个月内安排乙方进行水平测试和复学课程,或者直接合理安排复学课程。(重要说明:乙方只有在修完所报课程,但未通过所报课程相对应级别的考试,且在参加国际认证考试之日起12个月内才有资格提出免费复学申请。)
</div>
<div
class=
"Con_Normal"
>
2、乙方权利与义务
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
2.1 乙方权利
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.1.1 乙方有权向甲方反应其任课教师情况,如出现甲方老师不按时上课、不按教学计划上课等,乙方有权建议甲方更换培训教师或要求甲方及时规范该教师不当的上课行为。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.1.2 乙方修完所报课程,未通过所报课程相应级别的考试,有权在参加国际认证考试之日起12个月内向甲方提出一次免费复学申请。
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
2.2 乙方义务
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.2.1 为保障乙方学习效果,乙方自愿遵守甲方在本协议内指定的教学培训管理规定。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.2.2
为有针对性的给乙方提供更多且有效的升学、留学与就业服务,乙方须自愿服从甲方安排并参加相关国际认证考试;且乙方拿到国际认证考试成绩后,自愿将国际认证考试相关证书扫描件提交给甲方存档,并允许荣誉展示,作为学员见证资料。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.2.3 为监督教学过程,促使乙方最终达成学习目标,乙方应自愿参加甲方组织的相关测试,且正确率达到80%以上。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.2.4 因特殊原因请假,乙方应遵守以下教学管理规定。否则,将视为乙方主动放弃本阶段学习,如出现未达成考级目标的情况,乙方不再享受免费复学的权利:
</div>
<div
class=
"Con_Normal"
>
<div
class=
"Con_Normal Con_Suojin50"
>
A,乙方应在上课前48小时以前,向甲方授课教师请假;
</div>
<div
class=
"Con_Normal Con_Suojin50"
>
B,乙方累计连续3个月请假总时长在6小时以内;
</div>
<div
class=
"Con_Normal Con_Suojin50"
>
C,乙方应在取得甲方授课教师书面形式的批准确认后方可认定请假成立;
</div>
<div
class=
"Con_Normal Con_Suojin50"
>
D,乙方在请假后,应找授课教师或同学补习(可线上补习)课程,完成该阶段课程的到勤。
</div>
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.2.5 乙方必须保证上课到勤率在90%以上,并亲自确认签到情况,不得无故缺勤、迟到和早退,否则,将视为乙方主动放弃本阶段学习,如出现未达成考级目标的情况,乙方不再享有免费复学的权利。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.2.6 上课时,乙方应尊重甲方教师,不得出现接听电话、随意走动、饮食、抽烟、打牌或看与课程无关的书籍资料等行为。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.2.7 乙方无权将培训资料用作任何商业用途,否则,对造成甲方的直接或间接损失,乙方应当全额赔偿。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.2.8 非由甲方原因导致的乙方学习成绩未进步的后果,由乙方自己承担;乙方未服从甲方的教学管理要求,导致安全事故的责任后果,由乙方自己承担。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.2.9
乙方应按照本协议约定,按时足额缴纳学费,开课后延迟支付的(未按时支付学费和支付部分学费均为延迟支付),在7个工作日内,甲方有权要求乙方按照10元/天的标准支付违约金;乙方延迟7个工作日以上的情况下,甲方有权单方面解除本协议,并要求乙方按照200元/天的标准支付违约金。
</div>
<div
class=
"ConFtitle"
>
六、课程培训与服务的管理规定
</div>
<div
class=
"Con_Normal"
>
1、语言培训课程内容与考试要求
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
1.1 甲方将按照本协议第三条“培训课程内容”为乙方提供教学服务
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
1.2 乙方通过参加甲方提供的教学服务后,应主动参加相关国际考试。考试内容为:
</div>
<div
class=
"Con_Normal Con_Suojin"
>
A 日语国际能力测试(JLPT):初级(N5-N4)、中级(N3-N2)、高级(N1);
</div>
<div
class=
"Con_Normal Con_Suojin"
>
B 实用日本语鉴定考试(J.TEST):初级(E-F级)、中高级(A-D级);
</div>
<div
class=
"Con_Normal Con_Suojin"
>
C 日本留学生考试(EJU):文科(日语)、综合科目、数学。
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
1.3 乙方当前选择考试
<div
class=
"contractInput"
>
{{
dataList
.
Exam
}}
</div></div>
<div
class=
"Con_Normal"
>
2、高级课程增值课程特别条款
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
2.1 乙方在报名高级课程后,有机会参加以下增值课程:
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.1.1 乙方通过甲方面试后,有权申请参加甲方组织的“成长训练营培训”、“周末沙龙”等培训活动。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.1.2 乙方达到所学语言的高级水平后,并且通过甲方面试,有权申请参加甲方组织的“精品教师培训”、“精品导游培训”。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.1.3 以上两种培训资格有效期为6个月,即乙方报名增值课程且面试通过之日起6个月之内有效。逾期将视为主动放弃上述学习机会。
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
2.2 该增值课程属于甲方有偿提供给高级课程学员的课程,乙方报名参加该增值课程不得因任何原因要求甲方返还增值课程费用。
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
2.3 乙方自愿选择参加甲方提供的增值课程,自甲方发布报名通知后的规定时间内,乙方均可向甲方指定的工作人员报名参加,逾期未报名的视为放弃参加增值课程。
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
2.4 该增值课程可能涉及到户外活动,乙方报名该增值课程后因个人身体原因不适合继续参加的,乙方有义务告知甲方实际情况,经甲方同意后方可退出,且甲方不承担与此相关的任何责任。
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
2.5 在该增值课程中,乙方应当服从甲方的组织和管理,非因甲方原因造成的乙方人身财产损害,甲方不承担任何责任,由于乙方原因导致第三方人身财产损害,甲方不承担任何责任,若甲方因乙方原因而对第三方承担责任的,甲方有权向乙方追偿。
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
2.6 关于增值课程的最终解释权归甲方所有。
</div>
<div
class=
"ConFtitle"
>
七、日语导游培训管理规定
</div>
<div
class=
"ConFtitle"
>
特别提示:本条款仅适用于报名参加“日语导游培训课程”的学员,因每年日语导游培训课程人数有限,报完为止。
</div>
<div
class=
"Con_Normal"
>
1、乙方报名日语导游培训课程,且缴清该课程全部学费之后,日语达到N3水平,有资格参加甲方安排的导游培训,如乙方不参加培训的,须书面向甲方提出申请,否则甲方视为其主动放弃培训机会,甲方不承担任何责任。
</div>
<div
class=
"Con_Normal"
>
2、乙方参加导游证培训,自报名之日起,有效期为一年,逾期视为乙方自动放弃学习机会,甲方不承担任何责任。
</div>
<div
class=
"Con_Normal"
>
3、日语导游证培训时间和课程安排由甲方指定,当乙方达到日语N3水平,甲方教师将会通知乙方相关培训与考试的具体时间和注意事项。
</div>
<div
class=
"Con_Normal"
>
4、日语导游培训课程仅限乙方本人申请参加导游证的培训,不得转让第三方,亦不得折现等。
</div>
<div
class=
"Con_Normal"
>
5、如果乙方在日语导游证考试中未取得相应证书,乙方可在考试后12个月内免费进行一次日语导游培训课程的复学。
</div>
<div
class=
"Con_Normal"
>
6、乙方同时满足以下条件时,在乙方自愿的情况下,甲方负责乙方在甲方公司获得就业机会,甲方为乙方缴纳社保及各项补助金。
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
6.1 日语水平达到N2及以上;
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
6.2 独立带团8次或以上;
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
6.3 持有日语导游证;
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
6.4 完整参加甲方安排的导游培训,且考试合格;
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
6.5 自愿与甲方签订三年及以上劳动协议;
</div>
<div
class=
"Con_Normal"
style=
"margin-left:10px;"
>
6.6 乙方拿到甲方公司就业同意书,办理入职期限为甲方提供就业同意书之日起6个月内,乙方逾期办理则视为其主动放弃在甲方就业的机会,甲方不承担任何责任。
</div>
<div
class=
"Con_Normal"
>
7、关于日语导游培训课程的最终解释权归甲方所有。
</div>
<div
class=
"ConFtitle"
>
八、日本留学课程管理规定
</div>
<div
class=
"ConFtitle"
>
特别提示:本条款仅适用于报名参加“日本留学课程”的学员。
</div>
<div
class=
"Con_Normal"
>
1、日本留学课程是甲方根据乙方的留学学校及留学专业要求,结合乙方自身条件,协助乙方前往日本大学或优质语言学校进行学习的课程。该课程内容包含:
</div>
<div
class=
"Con_Normal Con_Suojin"
>
A 大学或大学院入学考试辅导(若乙方申请为语言学校,该课程则为日本留学生考试—EJU课程辅导)
</div>
<div
class=
"Con_Normal Con_Suojin"
>
B 面试辅导
</div>
<div
class=
"Con_Normal"
>
2、除课程内容外,甲方负责内容包含:学生入学规划、学校筛选、专业筛选、研究计划书辅导、导师沟通、面试稿编写(若需要)、取得研究生内定资格、出愿材料准备、材料审核、取得入学合格通知书、宿舍申请、在留资格资料的准备和审查、取得在留资格认证。乙方需自行承担往返机票费、签证费、入学金、乙方出境前从本城至机场的往返路费、到达日本后的交通费、住宿费等。
</div>
<div
class=
"Con_Normal"
style=
"font-weight:bold;"
>
本规定仅作为课程内容确认使用,留学服务具体细节请另行签订留学协议。
</div>
<div
class=
"Con_Normal"
>
3、关于日语导游培训课程的最终解释权归甲方所有。
</div>
<div
class=
"ConFtitle"
>
九、插班、请假、复课、合并班的教学培训管理
</div>
<div
class=
"Con_Normal"
>
1、插班
</div>
<div
class=
"Con_Normal Con_Suojin"
>
1.1 插班是指乙方在甲方开班以后报名学习,插入班级上课。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
1.2 因乙方自身原因跟不上进度,应及时向甲方老师报备,甲方根据乙方实际学习情况安排乙方到适合的班级上课。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
1.3 乙方发现所插入班级,难易程度仍不适合本人,应立即与甲方沟通,甲方须及时再次合理安排。
</div>
<div
class=
"Con_Normal"
>
2、请假
</div>
<div
class=
"Con_Normal"
>
请假是指乙方因正当原因无法正常上课,可向甲方老师申请请假,正当原因仅限如下情况:
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.1 乙方因不可抗力因素如:自然灾害、国家政策调整、战争、政府禁令等造成的双方不能正常上课的;
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.2 乙方因身体原因导致无法正常上课的(须开具正规医院相关证明);
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.3 所报课程上课时间与学校课程或者校方安排冲突的(须开具校方证明);
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.4 乙方正常请假后,可要求甲方老师保留学习资料,并及时与老师协商进行补课安排。同时,乙方须按时参加甲方老师安排的补课,并且完成甲方老师布置的补课任务,完成到勤;
</div>
<div
class=
"Con_Normal Con_Suojin"
>
2.5 乙方未请假或者未按照要求请假的,甲方有权默认乙方已上课,有权拒绝提供请假期间的学习资料及补课要求。同时,请假期间课时按照正常上课进行计费。
</div>
<div
class=
"Con_Normal"
>
3、停课、复课
</div>
<div
class=
"Con_Normal Con_Suojin"
>
3.1
因乙方自身原因导致无法上课,乙方有权向甲方提出停课申请,乙方须主动签订停课协议,停课期限最长不得超过12个月,在需要复课时,乙方须提前向甲方书面申请复课,甲方予以办理复课手续;停课期限届满未复课的,视为乙方主动放弃该课程学习,将自动终止本课程协议,甲方不承担任何退课退费责任。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
3.2 因乙方自身原因导致连续12个课时不按时出勤,乙方需书面向甲方申请停课,否则将视为乙方自动停课,甲方不承担任何退课退费责任,自动停课日起12个月内,乙方如需复课,需书面向甲方提出复课申请,甲方予以办理复课。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
3.3 乙方停课期间,甲方每半年通知乙方复课一次,请乙方保持通讯畅通,如若更换联系方式时,乙方应立即通知甲方,否则因此导致的所有责任与后果由乙方自行承担。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
3.4 乙方复课时,甲方根据乙方实际学习进度情况,安排乙方进入合适的班级学习,甲方保证乙方复课课程与乙方原听课课程教学内容基本一致。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
3.5 乙方办理停课后,如因乙方自身原因在12个月后仍无法进行复课的,责任由乙方自行承担,甲方不承担任何责任。
</div>
<div
class=
"Con_Normal"
>
4、合并班
</div>
<div
class=
"Con_Normal"
>
甲方将根据教学进度需要,班级进度,教师离职或转岗、进修等情况进行班级的合并与拆分,属于正常教学工作,甲方将尽力做好班级交接工作,乙方应予以积极的配合。
</div>
<div
class=
"ConFtitle"
>
十、退费条款
</div>
<div
class=
"Con_Normal"
>
1、因不可抗力因素如:自然灾害、国家政策调整、战争、政府禁令等造成的双方不能履行合同义务的,甲方将根据乙方实际上课情况计算费用,将剩余课程学费退还乙方。
</div>
<div
class=
"Con_Normal"
>
2、乙方如若办理停课或自动停课,可在首次自动停课之日起或学员申请停课之日起,12个月内办理复课,但无权申请退费。
</div>
<div
class=
"Con_Normal"
>
3、若乙方在课程未结束时就通过课程对应的级别考试,并且取得相应证书,乙方可以选择继续完成后续课程学习,或者自动放弃后续课程学习,无权申请退费。
</div>
<div
class=
"Con_Normal"
>
4、若乙方出现转让课时或让其他人顶替上课的行为,一经甲方发现,甲方有权取消乙方学习资格,同时视为乙方自动放弃该课程,无权申请退费。
</div>
<div
class=
"Con_Normal"
>
5、因乙方自身原因导致无法上课,且有正当理由(正当理由是指:上诉不可抗力因素、出国留学、不在本地学习、长期外地工作实习等,均需要提供相应证明),乙方有权提出终止合同,甲方须给乙方办理退课、退费(详见十一.9条)。
</div>
<div
class=
"Con_Normal"
>
6、因乙方自身原因导致无法上课,但非正当理由(正当理由是指:上诉不可抗力因素、出国留学、不在本地学习、长期外地工作实习等,均需要提供相应证明),乙方无权申请退费,但可向甲方提出建议或向甲方申请办理停课,甲方根据实际情况提供妥善解决方案。
</div>
<div
class=
"Con_Normal"
>
7、若乙方在报名任意一门甲方提供的课程(三.培训课程内容):
</div>
<div
class=
"Con_Normal Con_Suojin"
>
7.1 享受了甲方提供的课程学费优惠活动、奖学金活动、学习优惠等,均无权申请退费。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
7.2 办理了甲方提供的境外学习等相关手续,需要家庭有一定的财力证明,如因个人原因不能出具相关证明,无法出行者,无权申请退费。
</div>
<div
class=
"Con_Normal"
>
8、若乙方报名甲方课程,在缴纳学费时已享受了学费优惠后,又申请退费的情况,乙方必须符合以下情况方能作为正常退费要求:
</div>
<div
class=
"Con_Normal Con_Suojin"
>
8.1 自然灾害等不可抗力的情况;
</div>
<div
class=
"Con_Normal Con_Suojin"
>
8.2 出国留学的情况(需开具境外大学录取通知书及出行机票);
</div>
<div
class=
"Con_Normal Con_Suojin"
>
8.3 不在本地学习的情况(需开具相关证明);
</div>
<div
class=
"Con_Normal Con_Suojin"
>
8.4 长期外地工作实习的情况(需开具工作证明)。
</div>
<div
class=
"Con_Normal"
>
9、达到正常退费要求者,退费金额核算如下:
</div>
<div
class=
"Con_Normal Con_Suojin"
>
9.1
未参加抽奖等优惠活动者:应退学费=乙方已缴总学费-已上课程学费-(乙方已缴总学费-已上课程学费)×10%。其中“(乙方已缴总学费-已上课程学费)×10%”为违约金;课程中附赠的口语课程、考前冲刺课程、真题讲解等课程不纳入退费课时,乙方无权针对该课程申请退费;班级课时剩余计算方法按照班级学费平均到每小时计算。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
9.2 参加各项抽奖等优惠活动者,一律不予退费。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
9.3 因乙方自身原因(如未达到留学或旅游所对应的语言水平,且非上述十.8条不可抗力因素)不能参加境外留学、游学或旅游项目的,不予退还境外服务费。
</div>
<div
class=
"Con_Normal Con_Suojin"
>
9.4 满足正常退费要求的学员,境外留学、游学、旅游费用除去上述条款十.9.3外,余额部分应退还给乙方。
</div>
<div
class=
"ConFtitle"
>
十一、其他责任
</div>
<div
class=
"Con_Normal"
>
1、乙方对甲方提供的培训服务不满意,要求改进教学方法或者更换培训老师的,甲方应考虑乙方要求的合理性,并提供相应解决方案,但因培训老师的个人差异,乙方应理解解决方案,不能完全满足个人要求。
</div>
<div
class=
"Con_Normal"
>
2、乙方严重违反本协议约定的相关管理制度或干扰甲方教学培训管理规定时,甲方可单方面解除本协议,并且不退还任何费用。
</div>
<div
class=
"ConFtitle"
>
十二、合同争议解决方式
</div>
<div
class=
"Con_Normal"
>
1、本合同在履行过程中发生争议的,由双方当事人协商解决;协商不成的,可向甲方公司注册地仲裁委员会申请仲裁。
</div>
<div
class=
"Con_Normal"
>
2、本合同自乙方缴纳全额课程学费及签订协议之日起,36个月内有效,到期后本合同甲乙双方各项权益自动终止。
</div>
<div
class=
"Con_Normal"
>
3、本合同未尽事宜,由双方约定后签订补充协议等附件,补充协议及合同附件与本合同具有同等法律效力。
</div>
<div
class=
"Con_Normal"
>
4、本合同及其附件内,空格部分填写的文字与印刷文字具有同等法律效力。
</div>
<div
class=
"Con_Normal"
>
5、本合同正本一式两份,甲乙双方各持一份,具有同等法律效力。
</div>
<div
class=
"Con_Normal"
>
6、本合同自乙方缴纳全额课程学费及签订协议之日起正式生效。
</div>
<div
class=
"Con_Normal"
>
7、本合同协议部分到此为止,以下为空白。
</div>
<div
class=
"Con_Gaizhang Con_Normal"
>
<div
class=
""
>
<div>
甲方签字(盖章):
</div>
<div
style=
"margin-top:30px;"
>
<div
class=
"contractInput"
style=
"width:50px;"
>
{{
getDate
(
dataList
.
SealDate
,
1
)
}}
</div>
年
<div
class=
"contractInput"
style=
"width:50px;"
>
{{
getDate
(
dataList
.
SealDate
,
2
)
}}
</div>
月
<div
class=
"contractInput"
style=
"width:50px;"
>
{{
getDate
(
dataList
.
SealDate
,
3
)
}}
</div>
日
</div>
</div>
<div>
<div>
乙方签字(盖章):
</div>
<div
style=
"margin-top:30px;"
>
<div
class=
"contractInput"
style=
"width:50px;"
>
{{
getDate
(
dataList
.
SignDate
,
1
)
}}
</div>
年
<div
class=
"contractInput"
style=
"width:50px;"
>
{{
getDate
(
dataList
.
SignDate
,
2
)
}}
</div>
月
<div
class=
"contractInput"
style=
"width:50px;"
>
{{
getDate
(
dataList
.
SignDate
,
3
)
}}
</div>
日
</div>
</div>
</div>
</div>
</div>
</
template
>
<
script
>
import
{
GetEducationContractInfo
}
from
'../../api/sale/contract'
export
default
{
meta
:
{
title
:
"合同详情"
},
data
()
{
return
{
msg
:
{
ContractId
:
0
,
},
dataList
:{},
windowHeight
:
document
.
documentElement
.
clientHeight
}
},
created
()
{},
mounted
()
{
if
(
this
.
$route
.
query
.
Id
)
{
this
.
msg
.
ContractId
=
this
.
$route
.
query
.
Id
;
this
.
getList
();
}
},
methods
:
{
//获取校区列表
getList
()
{
GetEducationContractInfo
(
this
.
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
console
.
log
(
res
,
'数据'
);
this
.
dataList
=
res
.
Data
;
}
})
},
//格式化年月日
getDate
(
data
,
type
){
if
(
data
){
let
str
=
''
;
var
date
=
new
Date
(
data
);
// 获取当前月份
var
year
=
date
.
getFullYear
();
var
nowMonth
=
date
.
getMonth
()
+
1
;
var
day
=
date
.
getDate
();
if
(
type
==
1
){
str
=
year
;
}
if
(
type
==
2
){
str
=
nowMonth
;
}
if
(
type
==
3
){
str
=
day
;
}
return
str
;
}
}
},
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
src/pages/sale/contractManage.vue
0 → 100644
View file @
b13dcce1
<
style
>
</
style
>
<
template
>
<div
class=
"page-body"
>
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col-3"
>
<q-input
@
change=
"resetSearch"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.OrderId"
label=
"订单id"
@
clear=
"resetSearch"
maxlength=
"30"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.CType"
:options=
"CTypeList"
emit-value
map-options
label=
"类型"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
standout=
"bg-primary text-white"
v-model=
"msg.Status"
:options=
"StatusOpts"
option-value=
"Id"
option-label=
"Name"
label=
"状态"
emit-value
map-options
/>
</div>
<div
class=
"col-3"
>
<q-input
@
change=
"resetSearch"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.ContractNo"
label=
"合同编号"
@
clear=
"resetSearch"
maxlength=
"30"
/>
</div>
<div
class=
"col-3"
>
<q-input
@
change=
"resetSearch"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.StudentName"
label=
"学生姓名"
@
clear=
"resetSearch"
maxlength=
"30"
/>
</div>
</div>
</div>
<div
class=
"page-content"
>
<q-table
:pagination=
"msg"
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
class=
"sticky-column-table"
separator=
"none"
title=
"合同信息"
:data=
"dataList"
:columns=
"columns"
row-key=
"name"
>
<template
v-slot:top=
"props"
>
<div
class=
"col-2 q-table__title"
>
合同信息
</div>
<q-space
/>
<div
class=
"page-option"
>
<q-btn
color=
"accent"
size=
"sm"
icon=
"add"
label=
"新增合同"
@
click=
"EditContract(null)"
/>
</div>
</
template
>
<
template
v-slot:body-cell-CreateByName=
"props"
>
<q-td
:props=
"props"
>
<q-avatar
rounded
size=
"sm"
v-if=
"props.row.CreateByPhoto"
>
<img
:src=
"props.row.CreateByPhoto"
/>
</q-avatar>
<q-avatar
rounded
size=
"sm"
color=
"teal-10"
text-color=
"white"
v-if=
"!props.row.CreateByPhoto"
>
{{
props
.
value
.
substring
(
0
,
1
)
}}
</q-avatar>
{{
props
.
row
.
CreateByName
}}
</q-td>
</
template
>
<
template
v-slot:body-cell-StudentName=
"props"
>
<q-td
auto-width
:props=
"props"
>
<span
v-if=
"props.row.Sign"
style=
"color:#e95252;"
>
【
{{
props
.
row
.
Sign
}}
】
</span>
<span
v-else
style=
"color:#e95252;"
>
【未签字】
</span>
{{
props
.
row
.
StudentName
}}
</q-td>
</
template
>
<
template
v-slot:body-cell-Status=
"props"
>
<q-td
auto-width
:props=
"props"
>
<span
v-if=
"props.row.Status==0"
style=
"color:#E6A23C;"
>
草稿
</span>
<span
v-if=
"props.row.Status==1"
style=
"color:#409EFF;"
>
提交审核
</span>
<span
v-if=
"props.row.Status==2"
style=
"color:#67C23A;"
>
审合通过
</span>
<span
v-if=
"props.row.Status==3"
style=
"color:#F56C6C;"
>
驳回
</span>
<span
v-if=
"props.row.Status==4"
style=
"color:#e95252;"
>
取消
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-IsCompanySeal=
"props"
>
<q-td
auto-width
:props=
"props"
>
<span
v-if=
"props.row.IsCompanySeal==0"
style=
"color:#e95252;"
>
未盖章
</span>
<span
v-if=
"props.row.IsCompanySeal==1"
style=
"color:#67C23A;"
>
已盖章
</span>
</q-td>
</
template
>
<
template
v-slot:bottom
>
<q-pagination
class=
"full-width justify-end"
v-model=
"msg.pageIndex"
color=
"primary"
:max=
"pageCount"
:input=
"true"
@
input=
"changePage"
/>
</
template
>
<
template
v-slot:body-cell-optioned=
"props"
>
<q-td
:props=
"props"
>
<div>
<q-btn
flat
size=
"xs"
v-if=
"props.row.Status==0||props.row.Status==3"
icon=
"edit"
color=
"accent"
style=
"font-weight:400"
@
click=
"EditContract(props.row)"
label=
"编辑"
/>
<q-btn
flat
size=
"xs"
icon=
"iconfont icon-fuzhi1"
color=
"accent"
style=
"font-weight:400"
@
click=
"copyContract(props.row)"
label=
"复制"
/>
<q-btn
flat
size=
"xs"
icon=
"iconfont icon-View"
color=
"accent"
@
click=
"goContract(props.row)"
style=
"font-weight:400"
label=
"查看"
/>
<q-btn-dropdown
flat
size=
"xs"
color=
"dark"
label=
"更多"
style=
"margin-left:10px;"
v-if=
"props.row.Status==0||props.row.Status==2"
>
<q-list>
<q-item
clickable
v-close-popup
v-if=
"props.row.Status==0"
@
click=
"operationContract(props.row,1)"
>
<q-item-section>
<q-item-label>
提交审核
</q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-close-popup
v-if=
"props.row.Status==2"
@
click=
"downloadContract(props.row)"
>
<q-item-section>
<q-item-label>
下载
</q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-close-popup
v-if=
"props.row.Status==2"
@
click=
"CopyUrl(props.row)"
>
<q-item-section>
<q-item-label>
复制链接
</q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-close-popup
v-if=
"props.row.Status==0"
@
click=
"operationContract(props.row,4)"
>
<q-item-section>
<q-item-label>
取消
</q-item-label>
</q-item-section>
</q-item>
</q-list>
</q-btn-dropdown>
</div>
</q-td>
</
template
>
</q-table>
</div>
<eduinfo-form
v-if=
"isShowEduForm"
:seting-obj=
"eduObj"
@
close=
"closeEdudia"
@
success=
"refreshPage"
>
</eduinfo-form>
</div>
</template>
<
script
>
import
{
GetEducationContractPageList
,
SetEducationContractAudit
,
GetDownLoadEducationContract
,
SetEducationContractCopy
}
from
'../../api/sale/contract'
import
eduinfoForm
from
'../../components/sale/eduinfo-form'
;
export
default
{
meta
:
{
title
:
"合同管理"
},
components
:
{
eduinfoForm
},
data
()
{
return
{
columns
:
[{
name
:
'ContractNo'
,
label
:
'合同编号'
,
align
:
'left'
,
field
:
'ContractNo'
,
},
{
name
:
'StudentName'
,
label
:
'学生名称'
,
field
:
'StudentName'
,
align
:
'left'
},
// {
// name: 'SchoolName',
// label: '学校名称',
// align: 'left',
// field: 'SchoolName'
// },
{
name
:
'CourseName'
,
label
:
'课程名称'
,
align
:
'left'
,
field
:
'CourseName'
},
{
name
:
'CTypeName'
,
label
:
'状态'
,
align
:
'left'
,
field
:
'CTypeName'
},
{
name
:
'CourseContent'
,
label
:
'课程内容'
,
align
:
'left'
,
field
:
'CourseContent'
},
{
name
:
'CreateByName'
,
label
:
'创建人'
,
align
:
'left'
,
field
:
'CreateByName'
},
{
name
:
'Status'
,
label
:
'合同状态'
,
align
:
'left'
,
field
:
'Status'
},
{
name
:
'IsCompanySeal'
,
label
:
'是否盖章'
,
align
:
'left'
,
field
:
'Status'
},
{
name
:
'optioned'
,
label
:
'操作'
,
field
:
'RoomId'
}
],
loading
:
true
,
msg
:
{
pageIndex
:
1
,
pageSize
:
12
,
rowsPerPage
:
12
,
OrderId
:
0
,
//订单id
CType
:
0
,
//1培训 2留学
Status
:
-
1
,
//0草稿 1提交审核 2审核通过 3驳回 4取消
ContractNo
:
''
,
//合同编号
StudentName
:
''
//学生姓名
},
pageCount
:
0
,
dataList
:
[],
//类型下拉
CTypeList
:
[{
Id
:
0
,
Name
:
'不限'
},
{
Id
:
1
,
Name
:
'培训'
},
{
Id
:
2
,
Name
:
'留学'
}],
//状态下拉
StatusOpts
:
[{
Id
:
-
1
,
Name
:
'不限'
},
{
Id
:
0
,
Name
:
'草稿'
},
{
Id
:
1
,
Name
:
'提交审核'
},
{
Id
:
2
,
Name
:
'审核通过'
},
{
Id
:
3
,
Name
:
'驳回'
},
{
Id
:
4
,
Name
:
'取消'
}],
eduObj
:
null
,
isShowEduForm
:
false
}
},
created
()
{},
mounted
()
{
this
.
getList
()
},
methods
:
{
//获取校区列表
getList
()
{
this
.
loading
=
true
;
GetEducationContractPageList
(
this
.
msg
).
then
(
res
=>
{
this
.
loading
=
false
;
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
.
PageData
;
this
.
pageCount
=
res
.
Data
.
PageCount
;
console
.
log
(
res
,
'数据'
);
}
})
},
//重新查询
resetSearch
()
{
this
.
msg
.
pageIndex
=
1
;
this
.
getList
();
},
//分页改变
changePage
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getList
();
},
//跳转至编辑
goContract
(
item
)
{
this
.
$router
.
push
({
path
:
'contractEdit'
,
query
:
{
"Id"
:
item
.
Id
}
})
},
//新增修改合同
EditContract
(
obj
)
{
if
(
obj
)
{
this
.
eduObj
=
obj
}
else
{
this
.
eduObj
=
null
}
this
.
isShowEduForm
=
true
},
//关闭弹窗
closeEdudia
()
{
this
.
isShowEduForm
=
false
},
//刷新页面
refreshPage
()
{
this
.
isShowEduForm
=
false
;
this
.
getList
();
},
//取消合同
operationContract
(
item
,
type
)
{
let
msg
=
{
ContractId
:
item
.
Id
,
State
:
type
}
SetEducationContractAudit
(
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'修改成功!'
,
position
:
'top'
})
this
.
getList
();
}
})
},
//下载pdf
downloadContract
(
item
)
{
let
msg
=
{
ContractId
:
item
.
Id
,
CType
:
item
.
CType
}
GetDownLoadEducationContract
(
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
console
.
log
(
res
,
'数据'
);
let
urlObj
=
this
.
domainManager
();
const
a
=
document
.
createElement
(
'a'
);
a
.
setAttribute
(
'download'
,
''
);
a
.
setAttribute
(
'href'
,
urlObj
.
DomainUrl
+
'/api/file/DownloadFileForPdf?fileName='
+
'.pdf&&fPath='
+
res
.
Data
);
a
.
click
();
}
})
},
//复制合同
copyContract
(
item
){
let
msg
=
{
ContractId
:
item
.
Id
}
SetEducationContractCopy
(
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
getList
();
}
})
},
//复制URL
CopyUrl
(
item
)
{
var
oInput
=
document
.
createElement
(
'input'
);
oInput
.
value
=
item
.
Url
;
document
.
body
.
appendChild
(
oInput
);
oInput
.
select
();
// 选择对象
document
.
execCommand
(
"Copy"
);
// 执行浏览器复制命令
oInput
.
className
=
'oInput'
;
oInput
.
style
.
display
=
'none'
;
this
.
Info
(
"复制成功!"
);
},
},
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
src/router/routes.js
View file @
b13dcce1
...
...
@@ -456,6 +456,21 @@ const routes = [{
component
:
()
=>
import
(
"pages/sale/myOrder.vue"
)
},
{
path
:
"/sale/contractManage"
,
//销售 合同管理
component
:
()
=>
import
(
"pages/sale/contractManage.vue"
)
},
{
path
:
"/sale/contractEdit"
,
//销售 新增-编辑-查看合同
component
:
()
=>
import
(
"pages/sale/contractEdit.vue"
)
},
{
path
:
"/sale/contractAudit"
,
//销售 合同审核
component
:
()
=>
import
(
"pages/sale/contractAudit.vue"
)
},
{
path
:
"/sale/studentList"
,
//销售 学生名单
component
:
()
=>
...
...
@@ -551,6 +566,11 @@ const routes = [{
},
// Always leave this as last one,
// but you can also remove it
{
path
:
"/contractConfirm"
,
component
:
()
=>
import
(
"pages/contractConfirm.vue"
)
},
{
path
:
"/financial/financalDocument/PrintPage"
,
//财务单据打印
component
:
()
=>
...
...
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