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
2f1a10c3
Commit
2f1a10c3
authored
Apr 19, 2021
by
zhengke
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改
parent
3f26d411
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
837 additions
and
159 deletions
+837
-159
contract.js
src/api/sale/contract.js
+15
-0
eduinfo-form.vue
src/components/sale/eduinfo-form.vue
+648
-109
orderlist.vue
src/components/sale/orderlist.vue
+40
-35
contractView.vue
src/pages/contractView.vue
+128
-10
contractManage.vue
src/pages/sale/contractManage.vue
+6
-5
No files found.
src/api/sale/contract.js
View file @
2f1a10c3
...
...
@@ -96,3 +96,18 @@ export function SetOrderReceiveContract(data) {
})
}
/**
* 获取合同配置
*
*/
export
function
GetStudentInfo
(
data
)
{
return
request
({
url
:
'/EducationContract/GetStudentInfo'
,
method
:
'post'
,
data
})
}
src/components/sale/eduinfo-form.vue
View file @
2f1a10c3
<
style
>
.jobInfo_item
{
margin-bottom
:
20px
;
}
.job_Line
{
width
:
3px
;
height
:
11px
;
margin-right
:
10px
;
background-color
:
#3FC4FF
;
display
:
inline-block
;
}
.conTable
{
width
:
100%
;
}
.conTable
th
{
height
:
40px
;
}
</
style
>
<
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:9
00px;"
>
<q-card
style=
"width:
900px;max-width:10
00px;"
>
<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=
"jobInfo_item"
>
<span
class=
"job_Line"
></span>
学员信息
</div>
<div
class=
"row wrap"
>
<q-input
clearable
filled
class=
"col-6 q-pr-lg q-pb-lg"
v-model=
"objOption.StudentName"
label=
"学生姓名"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
v-model=
"objOption.StuBirth"
label=
"学生生日"
/>
<q-input
clearable
filled
class=
"col-6 q-pr-lg q-pb-lg"
v-model=
"objOption.StuEmail"
label=
"学生邮箱"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
v-model=
"objOption.StuAddress"
label=
"学生地址"
/>
<q-input
clearable
filled
class=
"col-6 q-pr-lg q-pb-lg"
v-model=
"objOption.StuTel"
label=
"学生电话"
/>
<div
class=
"col-6 q-pb-lg"
>
学生性别:
<q-radio
v-model=
"objOption.StuSex"
:val=
"0"
label=
"男"
/>
<q-radio
v-model=
"objOption.StuSex"
:val=
"1"
label=
"女"
/>
</div>
</div>
<div
class=
"jobInfo_item"
>
<span
class=
"job_Line"
></span>
家长信息
</div>
<table
class=
"conTable"
>
<tr>
<th>
家长信息
</th>
<th>
家长
</th>
<th>
紧急联系人
</th>
<th>
监护人身份证后4位
</th>
</tr>
<tr>
<td>
姓名
</td>
<td>
<q-input
filled
v-model=
"objOption.ParentName"
/>
</td>
<td>
<q-input
filled
v-model=
"objOption.UrgentName"
/>
</td>
<td
rowspan=
"4"
style=
"vertical-align:top;"
>
<q-input
filled
v-model=
"objOption.GuardianIDCard"
/>
</td>
</tr>
<tr>
<td>
与学员的关系
</td>
<td>
<q-input
filled
v-model=
"objOption.ParentRelation"
/>
</td>
<td>
<q-input
filled
v-model=
"objOption.UrgentRelation"
/>
</td>
</tr>
<tr>
<td>
联系电话
</td>
<td>
<q-input
filled
v-model=
"objOption.ParentTel "
/>
</td>
<td>
<q-input
filled
v-model=
"objOption.UrgentTel"
/>
</td>
</tr>
<tr>
<td>
电子邮箱
</td>
<td>
<q-input
filled
v-model=
"objOption.ParentEmail"
/>
</td>
<td>
<q-input
filled
v-model=
"objOption.UrgentEmail"
/>
</td>
</tr>
</table>
<div
class=
"jobInfo_item"
style=
"margin-top:20px;"
>
<span
class=
"job_Line"
></span>
培训课程信息
</div>
<table
class=
"conTable"
>
<tr>
<th>
培训课程信息
</th>
<th></th>
<th>
校区信息
</th>
<th></th>
<th></th>
<th></th>
</tr>
<tr>
<td>
培训课程内容
</td>
<td>
<q-input
filled
v-model=
"objOption.CourseName"
/>
</td>
<td>
校区名称
</td>
<td>
<q-input
filled
v-model=
"objOption.SchoolName"
/>
</td>
<td>
校区负责人
</td>
<td>
<q-input
filled
v-model=
"objOption.SchoolPrincipal"
/>
</td>
</tr>
<tr>
<td>
起始级别
</td>
<td>
<q-input
filled
v-model=
"objOption.StartLevel"
/>
</td>
<td>
课程顾问
</td>
<td>
<q-input
filled
v-model=
"objOption.CourseConsultant"
/>
</td>
<td>
收款人
</td>
<td>
<q-input
filled
v-model=
"objOption.Payee"
/>
</td>
</tr>
</table>
<div
class=
"jobInfo_item"
style=
"margin-top:20px;"
>
<span
class=
"job_Line"
></span>
费用类别
</div>
<table
class=
"conTable"
>
<tr>
<th
style=
"width:80px;"
>
费用类别
</th>
<th>
第一期
</th>
<th>
第二期
</th>
<th>
第三期
</th>
<th>
总计
</th>
</tr>
<tr>
<td>
培训课时数
</td>
<td>
<q-input
filled
@
keyup
.
native=
"checkPrice(objOption,'FirstClassHours')"
@
input=
"getTotalClassHours()"
v-model=
"objOption.FirstClassHours"
/>
</td>
<td>
<q-input
filled
@
keyup
.
native=
"checkPrice(objOption,'SecondClassHours')"
@
input=
"getTotalClassHours()"
v-model=
"objOption.SecondClassHours"
/>
</td>
<td>
<q-input
filled
@
keyup
.
native=
"checkPrice(objOption,'ThirdClassHours')"
@
input=
"getTotalClassHours()"
v-model=
"objOption.ThirdClassHours"
/>
</td>
<td>
<q-input
disable
filled
v-model=
"firstTotal"
/>
</td>
</tr>
<tr>
<td>
培训课程费
</td>
<td>
<q-input
filled
@
keyup
.
native=
"checkPrice(objOption,'FirstCourseFee')"
@
input=
"getTotalCourseFee(),getFirstFYXJ(),getfirstFeiyongTotal()"
v-model=
"objOption.FirstCourseFee"
/>
</td>
<td>
<q-input
filled
@
keyup
.
native=
"checkPrice(objOption,'SecondCourseFee')"
@
input=
"getTotalCourseFee(),getSecondFYXJ(),getsecondFeiyongTotal()"
v-model=
"objOption.SecondCourseFee"
/>
</td>
<td>
<q-input
filled
@
keyup
.
native=
"checkPrice(objOption,'ThirdCourseFee')"
@
input=
"getTotalCourseFee(),getthirdFYXJ(),getthirdFeiyongTotal()"
v-model=
"objOption.ThirdCourseFee"
/>
</td>
<td>
<q-input
disable
filled
v-model=
"secondTotal"
/>
</td>
</tr>
<tr>
<td>
培训教材费
</td>
<td>
<q-input
filled
@
keyup
.
native=
"checkPrice(objOption,'FirstBookFee')"
@
input=
"getTotalCommon(),getFirstFYXJ(),getfirstFeiyongTotal()"
v-model=
"objOption.FirstBookFee"
/>
</td>
<td>
<q-input
filled
@
keyup
.
native=
"checkPrice(objOption,'SecondBookFee')"
@
input=
"getTotalCommon(),getSecondFYXJ(),getsecondFeiyongTotal()"
v-model=
"objOption.SecondBookFee"
/>
</td>
<td>
<q-input
filled
@
keyup
.
native=
"checkPrice(objOption,'ThirdBookFee')"
@
input=
"getTotalCommon(),getthirdFYXJ(),getthirdFeiyongTotal()"
v-model=
"objOption.ThirdBookFee"
/>
</td>
<td>
<q-input
disable
filled
v-model=
"thirdTotal"
/>
</td>
</tr>
<tr>
<td>
培训课件费
</td>
<td>
<q-input
filled
@
keyup
.
native=
"checkPrice(objOption,'FirstClassFee')"
@
input=
"getTotalClassFee(),getFirstFYXJ(),getfirstFeiyongTotal()"
v-model=
"objOption.FirstClassFee"
/>
</td>
<td>
<q-input
filled
@
keyup
.
native=
"checkPrice(objOption,'SecondClassFee')"
@
input=
"getTotalClassFee(),getSecondFYXJ(),getsecondFeiyongTotal()"
v-model=
"objOption.SecondClassFee"
/>
</td>
<td>
<q-input
filled
@
keyup
.
native=
"checkPrice(objOption,'ThirdClassFee')"
@
input=
"getTotalClassFee(),getthirdFYXJ(),getthirdFeiyongTotal()"
v-model=
"objOption.ThirdClassFee"
/>
</td>
<td>
<q-input
disable
filled
v-model=
"fourthTotal"
/>
</td>
</tr>
<tr>
<td>
费用小计
</td>
<td>
<q-input
disable
filled
v-model=
"firstFYXJ"
/>
</td>
<td>
<q-input
disable
filled
v-model=
"secondFYXJ"
/>
</td>
<td>
<q-input
disable
filled
v-model=
"thirdFYXJ"
/>
</td>
<td>
<q-input
disable
filled
v-model=
"fyxjTotal"
/>
</td>
</tr>
<tr>
<td>
折让价格
</td>
<td>
<q-input
filled
@
keyup
.
native=
"checkPrice(objOption,'FirstDiscountMoney')"
@
input=
"getTotalDiscountMoney(),getfirstFeiyongTotal()"
v-model=
"objOption.FirstDiscountMoney"
/>
</td>
<td>
<q-input
filled
@
keyup
.
native=
"checkPrice(objOption,'SecondDiscountMoney')"
@
input=
"getTotalDiscountMoney(),getsecondFeiyongTotal()"
v-model=
"objOption.SecondDiscountMoney"
/>
</td>
<td>
<q-input
filled
@
keyup
.
native=
"checkPrice(objOption,'ThirdDiscountMoney')"
@
input=
"getTotalDiscountMoney(),getthirdFeiyongTotal()"
v-model=
"objOption.ThirdDiscountMoney"
/>
</td>
<td>
<q-input
disable
filled
v-model=
"fifthTotal"
/>
</td>
</tr>
<tr>
<td>
<span
style=
"color:red;"
>
费用总计
</span>
</td>
<td>
<q-input
disable
filled
v-model=
"objOption.FirstMoney"
/>
</td>
<td>
<q-input
disable
filled
v-model=
"objOption.SecondMoney"
/>
</td>
<td>
<q-input
disable
filled
v-model=
"objOption.ThirdMoney"
/>
</td>
<td>
<q-input
disable
filled
v-model=
"sixthTotal"
/>
</td>
</tr>
<tr>
<td>
支付日期
</td>
<td>
<q-input
filled
v-model=
"objOption.FirstPayDate"
class=
"col-6 q-pb-lg"
mask=
"date"
>
<template
v-slot:append
>
<q-icon
name=
"event"
class=
"cursor-pointer"
>
<q-popup-proxy
ref=
"qDateProxy1"
transition-show=
"scale"
transition-hide=
"scale"
>
<q-date
v-model=
"objOption.FirstPayDate"
@
input=
"() => $refs.qDateProxy1.hide()"
/>
</q-popup-proxy>
</q-icon>
</
template
>
</q-input>
</td>
<td>
<q-input
filled
v-model=
"objOption.SecondPayDate"
class=
"col-6 q-pb-lg"
mask=
"date"
>
<
template
v-slot:append
>
<q-icon
name=
"event"
class=
"cursor-pointer"
>
<q-popup-proxy
ref=
"qDateProxy2"
transition-show=
"scale"
transition-hide=
"scale"
>
<q-date
v-model=
"objOption.SecondPayDate"
@
input=
"() => $refs.qDateProxy2.hide()"
/>
</q-popup-proxy>
</q-icon>
</
template
>
</q-input>
</td>
<td>
<q-input
filled
v-model=
"objOption.ThirdPayDate"
class=
"col-6 q-pb-lg"
mask=
"date"
>
<
template
v-slot:append
>
<q-icon
name=
"event"
class=
"cursor-pointer"
>
<q-popup-proxy
ref=
"qDateProxy3"
transition-show=
"scale"
transition-hide=
"scale"
>
<q-date
v-model=
"objOption.ThirdPayDate"
@
input=
"() => $refs.qDateProxy3.hide()"
/>
</q-popup-proxy>
</q-icon>
</
template
>
</q-input>
</td>
<td>
<q-input
filled
disable
class=
"col-6 q-pb-lg"
mask=
"date"
>
<
template
v-slot:append
>
<q-icon
name=
"event"
class=
"cursor-pointer"
>
<q-popup-proxy
ref=
"qDateProxy3"
transition-show=
"scale"
transition-hide=
"scale"
>
<q-date
@
input=
"() => $refs.qDateProxy3.hide()"
/>
</q-popup-proxy>
</q-icon>
</
template
>
</q-input>
</td>
</tr>
</table>
<div
class=
"row wrap"
>
<div
class=
"col-6 q-pb-lg"
>
性别:
<q-radio
v-model=
"objOption.Sex"
:val=
"1"
label=
"男"
/>
<q-radio
v-model=
"objOption.Sex"
:val=
"2"
label=
"女"
/>
</div>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
v-model=
"objOption.IDCard"
label=
"身份证"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"objOption.Domicile"
label=
"身份证居住地"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
v-model=
"objOption.ContactAddress"
label=
"联系地址"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"objOption.ContactMobile"
label=
"联系电话"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
v-model=
"objOption.EmergencyContact"
label=
"紧急联系人"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"objOption.EmergencyMobile"
label=
"紧急联系电话"
/>
<q-select
filled
stack-label
v-if=
"objOption.Id==0"
option-value=
"Id"
option-label=
"Name"
v-model=
"objOption.CType"
ref=
"CType"
:options=
"CTypeList"
label=
"类型"
:dense=
"false"
class=
"col-6 q-pb-lg"
emit-value
map-options
:rules=
"[val => !!val || '请选择所属校区']"
/>
<q-select
v-else
filled
stack-label
option-value=
"Id"
option-label=
"Name"
v-model=
"objOption.CType"
ref=
"CType"
:options=
"CTypeList"
label=
"类型"
:dense=
"false"
disable
class=
"col-6 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 q-pr-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-pb-lg q-pr-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"
label=
"金额"
:rules=
"[val => !!val || '请填写金额']"
/>
<q-input
filled
stack-label
:dense=
"false"
v-model=
"objOption.Exam"
ref=
"Exam"
class=
"col-6 q-pb-lg q-pr-lg"
label=
"乙方当前选择考试"
/>
<q-input
filled
class=
"col-6 q-pb-lg"
v-model=
"objOption.Exam"
label=
"乙方当前选择考试"
/>
<div
class=
"col-3"
style=
"margin:10px 0 0 20px;"
>
是否有补充协议
<q-toggle
size=
"md"
label=
""
color=
"primary"
:false-value=
"0"
:true-value=
"1"
v-model=
"objOption.IsSupplement"
/>
</div>
</div>
</q-card-section>
<q-separator
/>
...
...
@@ -58,6 +338,7 @@
<
script
>
import
{
SetEducationContractInfo
,
GetStudentInfo
,
GetEducationContractInfo
}
from
'../../api/sale/contract'
export
default
{
...
...
@@ -72,96 +353,354 @@
persistent
:
true
,
objOption
:
{
Id
:
0
,
OrderId
:
0
,
GuestId
:
0
,
CType
:
1
,
//类型1培训 2留学
StudentName
:
''
,
//学生姓名,
SchoolName
:
'1'
,
//学校名称
CourseName
:
''
,
//课程名称
CourseContent
:
''
,
//课程内容
CNYCaps
:
''
,
//人民币大写
Money
:
''
,
//金额
StudentName
:
''
,
//学生姓名
StuBirth
:
''
,
//学生生日
StuSex
:
0
,
//学生性别0男1女
StuAddress
:
''
,
//学生地址
StuTel
:
''
,
//学生电话
StuEmail
:
''
,
//学生邮箱
ParentName
:
''
,
//家长姓名
ParentRelation
:
''
,
//家长与学员关系
ParentTel
:
''
,
//家长电话
ParentEmail
:
''
,
//家长邮箱
UrgentName
:
''
,
//紧急联系人姓名
UrgentRelation
:
''
,
//紧急联系人与学生关系
UrgentTel
:
''
,
//紧急联系人电话
UrgentEmail
:
''
,
//紧急联系人邮箱
GuardianIDCard
:
''
,
//监护人身份证后4位
CourseName
:
''
,
//培训课程内容
SchoolName
:
''
,
//校区名称
SchoolPrincipal
:
''
,
//校区负责人
StartLevel
:
''
,
//起始级别
CourseConsultant
:
''
,
//课程顾问
Payee
:
''
,
//收款人
FirstClassHours
:
0
,
//第一期-培训课时数
FirstCourseFee
:
''
,
//第一期-培训课程费
FirstBookFee
:
''
,
//第一期-培训教材费
FirstClassFee
:
''
,
//第一期-培训课件费
FirstDiscountMoney
:
''
,
// 第一期-折让价格
FirstMoney
:
''
,
//第一期-费用总计
FirstPayDate
:
''
,
//第一期-支付日期
SecondClassHours
:
0
,
//第二期-培训课时数
SecondCourseFee
:
''
,
// 第二期-培训课程费
SecondBookFee
:
''
,
//第二期-培训教材费
SecondClassFee
:
''
,
//第二期-培训课件费
SecondDiscountMoney
:
''
,
//第二期-折让价格
SecondMoney
:
''
,
//第二期-费用总计
SecondPayDate
:
''
,
//第二期-支付日期
ThirdClassHours
:
0
,
//第三期-培训课时数
ThirdCourseFee
:
''
,
//第三期-培训课程费
ThirdBookFee
:
''
,
//第三期-培训教材费
ThirdClassFee
:
''
,
// 第三期-培训课件费
ThirdDiscountMoney
:
''
,
//第三期-折让价格
ThirdMoney
:
''
,
//第三期-费用总计
ThirdPayDate
:
''
,
//第三期-支付日期
Exam
:
''
,
//乙方当前选择考试
Sex
:
1
,
IDCard
:
''
,
Domicile
:
''
,
ContactAddress
:
''
,
ContactMobile
:
''
,
EmergencyContact
:
''
,
EmergencyMobile
:
''
IsSupplement
:
1
,
// 0无 1 有 是否有补充协议
},
//类型下拉
CTypeList
:
[{
Id
:
1
,
Name
:
'培训'
},
{
Id
:
2
,
Name
:
'留学'
}],
firstTotal
:
0
,
// 培训课时数总计
secondTotal
:
0
,
// 培训课程费总计
thirdTotal
:
0
,
// 培训教材费总计
fourthTotal
:
0
,
// 培训课件费总计
fifthTotal
:
0
,
// 折让价格
sixthTotal
:
0
,
// 费用总计
firstFYXJ
:
0
,
secondFYXJ
:
0
,
thirdFYXJ
:
0
,
fyxjTotal
:
0
,
saveLoading
:
false
,
StudentMsg
:{
OrderId
:
0
,
GuestId
:
0
}
}
},
created
()
{},
mounted
()
{
this
.
initObj
()
if
(
this
.
setingObj
){
this
.
StudentMsg
.
OrderId
=
this
.
setingObj
.
OrderId
;
this
.
StudentMsg
.
GuestId
=
this
.
setingObj
.
GuestId
;
this
.
objOption
.
OrderId
=
this
.
setingObj
.
OrderId
;
this
.
objOption
.
GuestId
=
this
.
setingObj
.
GuestId
;
if
(
this
.
setingObj
.
ContractId
>
0
){
this
.
getInfoList
();
}
else
{
this
.
getStudentContract
();
}
}
},
methods
:
{
//保存合同
saveContract
()
{
this
.
$refs
.
StudentName
.
validate
()
this
.
$refs
.
CourseName
.
validate
()
this
.
$refs
.
CourseContent
.
validate
()
this
.
$refs
.
Money
.
validate
()
if
(
!
this
.
$refs
.
StudentName
.
hasError
&&
!
this
.
$refs
.
CourseName
.
hasError
&&
!
this
.
$refs
.
CourseContent
.
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'
);
})
//计算培训课时数总价
getTotalClassHours
()
{
if
(
this
.
objOption
.
FirstClassHours
>=
0
&&
this
.
objOption
.
SecondClassHours
>=
0
&&
this
.
objOption
.
ThirdClassHours
>=
0
)
{
this
.
firstTotal
=
(
parseFloat
(
this
.
objOption
.
FirstClassHours
)
+
parseFloat
(
this
.
objOption
.
SecondClassHours
)
+
parseFloat
(
this
.
objOption
.
ThirdClassHours
)).
toFixed
(
2
);
}
},
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
;
this
.
objOption
.
Sex
=
tempObj
.
Sex
;
this
.
objOption
.
IDCard
=
tempObj
.
IDCard
;
this
.
objOption
.
Domicile
=
tempObj
.
Domicile
;
this
.
objOption
.
ContactAddress
=
tempObj
.
ContactAddress
;
this
.
objOption
.
ContactMobile
=
tempObj
.
ContactMobile
;
this
.
objOption
.
EmergencyContact
=
tempObj
.
EmergencyContact
;
this
.
objOption
.
EmergencyMobile
=
tempObj
.
EmergencyMobile
;
}
})
//计算培训课程费总价
getTotalCourseFee
()
{
let
arr
=
[
this
.
objOption
.
FirstCourseFee
,
this
.
objOption
.
SecondCourseFee
,
this
.
objOption
.
ThirdCourseFee
];
this
.
secondTotal
=
0
;
arr
.
forEach
(
x
=>
{
if
(
x
!=
''
)
{
(
this
.
secondTotal
+=
parseFloat
(
x
)).
toFixed
(
2
);
}
})
},
//计算培训教材费总价
getTotalCommon
()
{
let
arr
=
[
this
.
objOption
.
FirstBookFee
,
this
.
objOption
.
SecondBookFee
,
this
.
objOption
.
ThirdBookFee
];
this
.
thirdTotal
=
0
;
arr
.
forEach
(
x
=>
{
if
(
x
!=
''
)
{
(
this
.
thirdTotal
+=
parseFloat
(
x
)).
toFixed
(
2
);
}
})
},
//计算培训课件费总价
getTotalClassFee
()
{
let
arr
=
[
this
.
objOption
.
FirstClassFee
,
this
.
objOption
.
SecondClassFee
,
this
.
objOption
.
ThirdClassFee
];
this
.
fourthTotal
=
0
;
arr
.
forEach
(
x
=>
{
if
(
x
!=
''
)
{
(
this
.
fourthTotal
+=
parseFloat
(
x
)).
toFixed
(
2
);
}
})
},
//计算折让价格总价
getTotalDiscountMoney
()
{
let
arr
=
[
this
.
objOption
.
FirstDiscountMoney
,
this
.
objOption
.
SecondDiscountMoney
,
this
.
objOption
.
ThirdDiscountMoney
];
this
.
fifthTotal
=
0
;
arr
.
forEach
(
x
=>
{
if
(
x
!=
''
)
{
(
this
.
fifthTotal
+=
parseFloat
(
x
)).
toFixed
(
2
);
}
})
},
//计算第一列费用小计
getFirstFYXJ
()
{
let
arr
=
[
this
.
objOption
.
FirstCourseFee
,
this
.
objOption
.
FirstBookFee
,
this
.
objOption
.
FirstClassFee
];
this
.
firstFYXJ
=
0
;
arr
.
forEach
(
x
=>
{
if
(
x
!=
''
)
{
(
this
.
firstFYXJ
+=
parseFloat
(
x
)).
toFixed
(
2
);
}
})
this
.
getTotalFYXJ
();
},
//计算第二列费用小计
getSecondFYXJ
()
{
let
arr
=
[
this
.
objOption
.
SecondCourseFee
,
this
.
objOption
.
SecondBookFee
,
this
.
objOption
.
SecondClassFee
];
this
.
secondFYXJ
=
0
;
arr
.
forEach
(
x
=>
{
if
(
x
!=
''
)
{
(
this
.
secondFYXJ
+=
parseFloat
(
x
)).
toFixed
(
2
);
}
})
this
.
getTotalFYXJ
();
},
//计算第三列费用小计
getthirdFYXJ
()
{
let
arr
=
[
this
.
objOption
.
ThirdCourseFee
,
this
.
objOption
.
ThirdBookFee
,
this
.
objOption
.
ThirdClassFee
];
this
.
thirdFYXJ
=
0
;
arr
.
forEach
(
x
=>
{
if
(
x
!=
''
)
{
(
this
.
thirdFYXJ
+=
parseFloat
(
x
)).
toFixed
(
2
);
}
})
this
.
getTotalFYXJ
();
},
//获取费用小计总计
getTotalFYXJ
()
{
let
arr
=
[
this
.
firstFYXJ
,
this
.
secondFYXJ
,
this
.
thirdFYXJ
];
this
.
fyxjTotal
=
0
;
arr
.
forEach
(
x
=>
{
if
(
x
!=
''
)
{
(
this
.
fyxjTotal
+=
parseFloat
(
x
)).
toFixed
(
2
);
}
})
},
//计算第一列费用总计
getfirstFeiyongTotal
()
{
if
(
this
.
firstFYXJ
!=
''
&&
this
.
objOption
.
FirstDiscountMoney
!=
''
)
{
this
.
objOption
.
FirstMoney
=
(
parseFloat
(
this
.
firstFYXJ
)
-
parseFloat
(
this
.
objOption
.
FirstDiscountMoney
))
.
toFixed
(
2
);
}
this
.
getTotal
();
},
//计算第二列费用总计
getsecondFeiyongTotal
()
{
if
(
this
.
secondFYXJ
!=
''
&&
this
.
objOption
.
SecondDiscountMoney
!=
''
)
{
this
.
objOption
.
SecondMoney
=
(
parseFloat
(
this
.
secondFYXJ
)
-
parseFloat
(
this
.
objOption
.
SecondDiscountMoney
))
.
toFixed
(
2
);
}
this
.
getTotal
();
},
//计算第三列费用总计
getthirdFeiyongTotal
()
{
if
(
this
.
thirdFYXJ
!=
''
&&
this
.
objOption
.
ThirdDiscountMoney
!=
''
)
{
this
.
objOption
.
ThirdMoney
=
(
parseFloat
(
this
.
thirdFYXJ
)
-
parseFloat
(
this
.
objOption
.
ThirdDiscountMoney
))
.
toFixed
(
2
);
}
this
.
getTotal
();
},
//获取费用总计合计
getTotal
()
{
let
arr
=
[
this
.
objOption
.
FirstMoney
,
this
.
objOption
.
SecondMoney
,
this
.
objOption
.
ThirdMoney
]
this
.
sixthTotal
=
0
;
arr
.
forEach
(
x
=>
{
if
(
x
!=
''
)
{
(
this
.
sixthTotal
+=
parseFloat
(
x
)).
toFixed
(
2
);
}
})
},
//保存合同
saveContract
()
{
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'
);
this
.
closeSaveForm
();
})
},
closeSaveForm
()
{
this
.
$emit
(
'close'
)
this
.
persistent
=
false
},
},
watch
:
{
//获取学生信息
getStudentContract
(){
GetStudentInfo
(
this
.
StudentMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
var
tempData
=
res
.
Data
;
this
.
objOption
.
StudentName
=
tempData
.
StudentName
;
this
.
objOption
.
StuTel
=
tempData
.
StuTel
;
this
.
objOption
.
StuSex
=
tempData
.
StuSex
;
this
.
objOption
.
StuEmail
=
tempData
.
StuEmail
;
this
.
objOption
.
StuBirth
=
tempData
.
StuBirth
;
this
.
objOption
.
StuAddress
=
tempData
.
StuAddress
;
this
.
objOption
.
StartLevel
=
tempData
.
StartLevel
;
this
.
objOption
.
SchoolPrincipal
=
tempData
.
SchoolPrincipal
;
this
.
objOption
.
SchoolName
=
tempData
.
SchoolName
;
this
.
objOption
.
Payee
=
tempData
.
Payee
;
this
.
objOption
.
Money
=
tempData
.
Money
;
this
.
objOption
.
FirstMoney
=
tempData
.
FirstMoney
;
this
.
objOption
.
FirstDiscountMoney
=
tempData
.
FirstDiscountMoney
;
this
.
objOption
.
FirstCourseFee
=
tempData
.
FirstCourseFee
;
this
.
objOption
.
FirstClassHours
=
tempData
.
FirstClassHours
;
this
.
objOption
.
FirstClassFee
=
tempData
.
FirstClassFee
;
this
.
objOption
.
FirstBookFee
=
tempData
.
FirstBookFee
;
this
.
objOption
.
CourseName
=
tempData
.
CourseName
;
this
.
objOption
.
CourseConsultant
=
tempData
.
CourseConsultant
;
this
.
objOption
.
CNYCaps
=
tempData
.
CNYCaps
;
this
.
getTotalClassHours
();
this
.
getTotalCourseFee
();
this
.
getTotalCommon
();
this
.
getTotalClassFee
();
this
.
getTotalDiscountMoney
();
this
.
getFirstFYXJ
();
this
.
getSecondFYXJ
();
this
.
getthirdFYXJ
();
this
.
getTotalFYXJ
();
this
.
getTotal
();
}
})
},
//获取详情
getInfoList
(){
let
msg
=
{
ContractId
:
this
.
setingObj
.
ContractId
}
GetEducationContractInfo
(
msg
).
then
(
res
=>
{
console
.
log
(
res
,
'详情数据'
);
if
(
res
.
Code
==
1
)
{
var
tempData
=
res
.
Data
;
this
.
objOption
.
StudentName
=
tempData
.
StudentName
;
this
.
objOption
.
StuTel
=
tempData
.
StuTel
;
this
.
objOption
.
StuSex
=
tempData
.
StuSex
;
this
.
objOption
.
StuEmail
=
tempData
.
StuEmail
;
this
.
objOption
.
StuBirth
=
tempData
.
StuBirth
;
this
.
objOption
.
StuAddress
=
tempData
.
StuAddress
;
this
.
objOption
.
StartLevel
=
tempData
.
StartLevel
;
this
.
objOption
.
SchoolPrincipal
=
tempData
.
SchoolPrincipal
;
this
.
objOption
.
SchoolName
=
tempData
.
SchoolName
;
this
.
objOption
.
Payee
=
tempData
.
Payee
;
this
.
objOption
.
Money
=
tempData
.
Money
;
this
.
objOption
.
FirstMoney
=
tempData
.
FirstMoney
;
this
.
objOption
.
FirstPayDate
=
tempData
.
FirstPayDate
;
this
.
objOption
.
FirstDiscountMoney
=
tempData
.
FirstDiscountMoney
;
this
.
objOption
.
FirstCourseFee
=
tempData
.
FirstCourseFee
;
this
.
objOption
.
FirstClassHours
=
tempData
.
FirstClassHours
;
this
.
objOption
.
FirstClassFee
=
tempData
.
FirstClassFee
;
this
.
objOption
.
FirstBookFee
=
tempData
.
FirstBookFee
;
this
.
objOption
.
SecondClassHours
=
tempData
.
SecondClassHours
;
this
.
objOption
.
SecondCourseFee
=
tempData
.
SecondCourseFee
;
this
.
objOption
.
SecondBookFee
=
tempData
.
SecondBookFee
;
this
.
objOption
.
SecondClassFee
=
tempData
.
SecondClassFee
;
this
.
objOption
.
SecondDiscountMoney
=
tempData
.
SecondDiscountMoney
;
this
.
objOption
.
SecondMoney
=
tempData
.
SecondMoney
;
this
.
objOption
.
SecondPayDate
=
tempData
.
SecondPayDate
;
this
.
objOption
.
ThirdClassHours
=
tempData
.
ThirdClassHours
;
this
.
objOption
.
ThirdCourseFee
=
tempData
.
ThirdCourseFee
;
this
.
objOption
.
ThirdBookFee
=
tempData
.
ThirdBookFee
;
this
.
objOption
.
ThirdClassFee
=
tempData
.
ThirdClassFee
;
this
.
objOption
.
ThirdDiscountMoney
=
tempData
.
ThirdDiscountMoney
;
this
.
objOption
.
ThirdMoney
=
tempData
.
ThirdMoney
;
this
.
objOption
.
ThirdPayDate
=
tempData
.
ThirdPayDate
;
this
.
objOption
.
CourseName
=
tempData
.
CourseName
;
this
.
objOption
.
CourseConsultant
=
tempData
.
CourseConsultant
;
this
.
objOption
.
CNYCaps
=
tempData
.
CNYCaps
;
this
.
objOption
.
Exam
=
tempData
.
Exam
;
this
.
objOption
.
IsSupplement
=
tempData
.
IsSupplement
;
this
.
objOption
.
ParentName
=
tempData
.
ParentName
;
this
.
objOption
.
ParentRelation
=
tempData
.
ParentRelation
;
this
.
objOption
.
UrgentName
=
tempData
.
UrgentName
;
this
.
objOption
.
GuardianIDCard
=
tempData
.
GuardianIDCard
;
this
.
objOption
.
UrgentRelation
=
tempData
.
UrgentRelation
;
this
.
objOption
.
ParentTel
=
tempData
.
ParentTel
;
this
.
objOption
.
UrgentTel
=
tempData
.
UrgentTel
;
this
.
objOption
.
ParentEmail
=
tempData
.
ParentEmail
;
this
.
objOption
.
UrgentEmail
=
tempData
.
UrgentEmail
;
this
.
getTotalClassHours
();
this
.
getTotalCourseFee
();
this
.
getTotalCommon
();
this
.
getTotalClassFee
();
this
.
getTotalDiscountMoney
();
this
.
getFirstFYXJ
();
this
.
getSecondFYXJ
();
this
.
getthirdFYXJ
();
this
.
getTotalFYXJ
();
this
.
getTotal
();
}
})
}
},
}
...
...
src/components/sale/orderlist.vue
View file @
2f1a10c3
...
...
@@ -145,11 +145,11 @@
<span
v-for=
"(x,j) in item.GuestList"
:index=
"j"
v-if=
"x.GuestState==1"
style=
"color:#2961FE;margin-right: 5px"
>
{{x.GuestName}}
</span>
</div>
<div
v-if=
"AuthorityObj.isShowContract&&item.GuestList&&item.GuestList.length>0&&item.ContractList&&item.ContractList.length==0"
class=
"takeContract"
@
click=
"takeContract(item)"
>
领取合同
</div>
<div
v-if=
"AuthorityObj.isShowContract&&item.
ContractList&&item.Contrac
tList.length>0"
class=
"takeContract"
>
查看合同
<q-popup-proxy>
<
!-- <
div v-if="AuthorityObj.isShowContract&&item.GuestList&&item.GuestList.length>0&&item.ContractList&&item.ContractList.length==0"
class="takeContract" @click="takeContract(item)">领取合同</div>
-->
<div
v-if=
"AuthorityObj.isShowContract&&item.
GuestList&&item.Gues
tList.length>0"
class=
"takeContract"
>
<span
@
click=
"isShowPop=true"
>
查看合同
</span>
<q-popup-proxy
v-if=
"isShowPop"
>
<q-banner>
<div
style=
"width: 450px;max-height:220px;overflow:auto;"
>
<table
class=
"Contract_Table"
>
...
...
@@ -159,19 +159,15 @@
<th>
状态
</th>
<th
width=
"110px;"
>
操作
</th>
</tr>
<tr
v-for=
"subItem in item.
Contrac
tList"
>
<td>
{{subItem.
Studen
tName}}
</td>
<tr
v-for=
"subItem in item.
Gues
tList"
>
<td>
{{subItem.
Gues
tName}}
</td>
<td>
{{subItem.ContractNo}}
</td>
<td>
{{subItem.ContractStatusStr}}
</td>
<td>
<span
v-if=
"subItem.Status==0"
>
草稿
</span>
<span
v-if=
"subItem.Status==1"
>
提交审核
</span>
<span
v-if=
"subItem.Status==2"
>
审核通过
</span>
<span
v-if=
"subItem.Status==3"
>
驳回
</span>
<span
v-if=
"subItem.Status==4"
>
取消
</span>
</td>
<td>
<q-btn
color=
"accent"
v-if=
"subItem.ContractNo==''"
size=
"sm"
class=
"q-mr-md"
<q-btn
color=
"accent"
v-if=
"subItem.ContractId==0"
size=
"sm"
class=
"q-mr-md"
@
click=
"takeContractTwo(item,subItem)"
label=
"领取合同"
/>
<q-btn
color=
"accent"
v-else
size=
"sm"
class=
"q-mr-md"
@
click=
"takeContractTwo(item,subItem)"
label=
"修改"
/>
</td>
</tr>
</table>
...
...
@@ -553,6 +549,10 @@
<viewquotation-form
v-if=
"isShowviewQuo"
:rId=
"offerId"
:isShowCancle=
"1"
@
close=
"closeQuota"
@
success=
"refreshOrder"
>
</viewquotation-form>
<eduinfo-form
v-if=
"isShowEduForm"
:seting-obj=
"eduObj"
@
close=
"closeEdudia"
@
success=
"refreshPage"
>
</eduinfo-form>
</div>
</template>
...
...
@@ -567,6 +567,8 @@
import
continueclassForm
from
'../sale/continueclass-form'
//续课申请
import
viewquotationForm
from
'../sale/viewquotation-form'
import
eduinfoForm
from
'../sale/eduinfo-form'
import
{
cancelClassOrder
,
//取消订单
}
from
'../../api/sale/sale'
...
...
@@ -588,7 +590,8 @@
backclassForm
,
moneyForm
,
continueclassForm
,
viewquotationForm
viewquotationForm
,
eduinfoForm
},
props
:
{
//正常订单
...
...
@@ -645,8 +648,12 @@
isShowRewardEdit
:
false
,
//是否显示修改额外提成按钮
isShowBackClass
:
false
,
//是否显示退课按钮
isShowRenewClass
:
false
,
//是否显示续课按钮
isShowContract
:
fals
e
,
//是都显示合同
isShowContract
:
tru
e
,
//是都显示合同
},
isShowEduForm
:
false
,
eduObj
:{},
isShowPop
:
false
}
},
created
()
{
...
...
@@ -945,6 +952,15 @@
this
.
CommonType
=
type
;
this
.
isShowMoney
=
true
;
},
//关闭弹窗
closeEdudia
()
{
this
.
isShowEduForm
=
false
},
//刷新页面
refreshPage
()
{
this
.
refreshOrder
();
},
//领取合同
takeContract
(
item
)
{
let
msg
=
{
...
...
@@ -968,26 +984,15 @@
})
},
takeContractTwo
(
item
,
subItem
)
{
let
msg
=
{
let
obj
=
{
OrderId
:
item
.
OrderId
,
GuestId
:
subItem
.
GuestId
GuestId
:
subItem
.
Id
,
ContractId
:
subItem
.
ContractId
}
SetOrderReceiveContract
(
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'操作成功'
,
position
:
'top'
})
//调用父页面成功方法
this
.
$emit
(
'success'
);
}
}).
catch
(()
=>
{
})
}
this
.
eduObj
=
obj
;
this
.
isShowPop
=
false
;
this
.
isShowEduForm
=
true
;
},
}
}
...
...
src/pages/contractView.vue
View file @
2f1a10c3
...
...
@@ -5,10 +5,11 @@
height
:
auto
;
margin
:
auto
;
padding
:
20px
0
;
border
:
1px
solid
#d1d1d1
;
/* border: 1px solid #d1d1d1; */
}
.comTitle
{
width
:
97%
;
border
:
2px
solid
#808080
;
padding
:
5px
;
background-color
:
#fff
;
...
...
@@ -48,7 +49,7 @@
.comflex
{
display
:
flex
;
justify-content
:
space-between
;
margin-bottom
:
1
0px
;
margin-bottom
:
2
0px
;
}
.contractInput
{
...
...
@@ -63,17 +64,48 @@
.comLeftTile
{
margin-right
:
20px
;
}
.conTable
td
{
height
:
30px
;
.conTable
td
{
height
:
30px
;
}
.conTable
th
{
height
:
40px
;
}
.input2
{
width
:
280px
;
}
.input3
{
width
:
250px
;
}
.conTable
th
{
height
:
40px
;
.conTractInner
{
width
:
33%
;
min-height
:
400px
;
border
:
1px
solid
#d1d1d1
;
padding
:
10px
;
}
.input2
{
width
:
280px
;
.commonTitle1
{
font-size
:
16px
;
margin-bottom
:
10px
;
font-weight
:
bold
;
}
.input3
{
width
:
250px
;
.commonContent
{
font-size
:
14px
;
line-height
:
25px
;
margin-bottom
:
20px
;
}
.conTable
th
,
.conTable
td
{
height
:
40px
;
}
.ConTract_Line
.commonContent
{
line-height
:
35px
;
}
</
style
>
<
template
>
...
...
@@ -355,6 +387,92 @@
</tr>
</table>
<div
class=
"comflex"
>
<div
class=
"conTractInner"
>
<div
class=
"commonTitle1"
>
一、声明
</div>
<div
class=
"commonContent"
>
当您签署此协议之前,请确保已清楚了解以下事宜:
</div>
<div
class=
"commonContent"
>
1、温馨提示:日语学习的过程中,学员的上课到勤率越高,教学成果会更好,学员达成课程学习目标的概率将会较高。
</div>
<div
class=
"commonContent"
style=
"color:red;"
>
因此,请确保您已经认真了解过该门课程的学习内容、规划与学费事宜;已充分做好了各项学习准备,真正让自己做到上课到勤率达到90%以上,努力达成既定学习目标。
</div>
<div
class=
"commonContent"
>
2、您有一次在学习的任何阶段申请停课的权利。当您按要求正式办理相关停课手续之日起,12个月内,如无不可抗力事由,您必须从停课之日起按要求提出复课申请。您如未按要求复课,则视作学员主动放弃继续学习的权力,终止本课程协议。
</div>
</div>
<div
class=
"conTractInner"
>
<div
class=
"commonContent"
>
3、请您牢记全国官方唯一服务号码:028-6199-3633
</div>
<div
class=
"commonContent"
style=
"color:red;"
>
4、请您认真阅读并充分理解本协议内容后签署此协议,一旦签署则视为完全理解并同意该协议内容。
</div>
<div
class=
"commonTitle1"
>
二、总则
</div>
<div
class=
"commonContent"
>
成都市锦江区甲鹤外语培训学校有限公司(以下简称“甲方”)与培训学员(以下简称“乙方”)根据《中华人民共和国合同法》等法律、法规规定,双方在平等、自愿、协商一致的基础上达成此协议。
如乙方有同时学习两门或两门以上不同类别的课程要求,则乙方须分课程类别签订课程协议。
</div>
</div>
<div
class=
"conTractInner"
>
<div
class=
"commonTitle1"
>
三、课程费用
</div>
<div
class=
"commonContent"
>
1、费用总计:以乙方选择课程之时,即时公布的课程收费标准为准。
</div>
<div>
人民币(大写):
<div
class=
"contractInput"
style=
"width:150px;"
></div>
圆
</div>
<div
style=
"margin-top:20px;"
>
人民币(小写):
<div
class=
"contractInput"
style=
"width:150px;"
></div>
元
</div>
<div
class=
"commonContent"
>
2、支付方式:
<span
style=
"color:red;"
>
扫码支付(微信、支付宝)、POS机刷卡支付(信用卡,银行借记卡)、银行汇款/转账。
</span>
</div>
<div
class=
"commonContent"
>
3、支付截止日期提醒:正式确认报名之日起,乙方须在7个工作日内足额缴纳学费(正式确认报名的时间以乙方缴纳定金之日为准,若乙方未缴纳定金的,以正式开课日前七个工作日为准),因课程一旦开始,同班级学员将统一安排课表持续学习,为了不打乱正常的授课计划,乙方应按本协议约定时间内足额缴纳学费,因逾期缴费所造成的课程延误或课程进度缺失,乙方自行承担责任。甲方因乙方逾期缴费而造成的损失,由乙方承担。
</div>
<div
class=
"commonTitle1"
>
四、双方权利与义务
</div>
</div>
</div>
<div
class=
"comTitle"
>
<div
class=
"comTiInner"
>
<div
class=
"comTLeft"
>
甲鹤日语课程协议
</div>
<div
class=
"comTRight"
></div>
</div>
</div>
<div
class=
"comflex"
style=
"margin-top:40px;"
>
<div
class=
"conTractInner ConTract_Line"
>
<div
class=
"commonContent"
>
1、甲方权利与义务
</div>
<div
class=
"commonContent"
>
1.1 甲方权利
</div>
<div
class=
"commonContent"
>
1.1.1 甲方按照甲方的教学管理制度规定对乙方实施培训管理。
</div>
<div
class=
"commonContent"
>
1.1.2 甲方按本协议约定向乙方收取课程费用。
</div>
<div
class=
"commonContent"
>
1.1.3 如有乙方违反甲方的教学管理制度的行为,甲方有权要求乙方在规定时间内进行改正。
</div>
<div
class=
"commonContent"
>
1.1.4 为达到更好的教学效果,甲方应根据班级成员状
况、班级教学进度和教学情况,做好合理安排,监督并协助授课老师调整授课方式,必要时有权利为学员更换更适合的教师授课。
</div>
<div
class=
"commonContent"
>
1.1.5 根据班级人数状况以及学员学习进度,甲方应
主动提出更优的班级组成形式的建议,必要时,可适当调整乙方的班级管理 (班级分组、授课形式、授课地点等)。
</div>
<div
class=
"commonContent"
>
1.2 甲方义务
</div>
<div
class=
"commonContent"
>
1.2.1 甲方制定规范有效的培训计划,其中包括:教材和资料的确认;在合理期限内,通过完成教学课时,达成教学进度目标;定时测验,随时掌握班级学习情况;严格对教师和学员进行考核;甲方教师应对学员发布作业以及批改作业;甲方老师应按时协助学员安排好国际认证考试计划等。
</div>
<div
class=
"commonContent"
>
1.2.2 甲方依据本协议规定,指派任课教师,在合理的期限内完成教学服务。
</div>
<div
class=
"commonContent"
>
1.2.3 甲方应当及时且有效的解决乙方通过当面咨询或拨打咨询电话等方式提出的在培训过程中遇到的与培训内容相关的问题。
</div>
<div
class=
"commonContent"
>
1.2.4 甲方依据乙方学习的实际情况,在收到乙
</div>
</div>
<div
class=
"conTractInner ConTract_Line"
>
<div
class=
"commonContent"
>
方的正式书面申请之日起,在10个工作日内为乙方开具在读证明或培训证明。
</div>
<div
class=
"commonContent"
>
1.2.5 当乙方在修完所报课程,但未通过所报课程相对应级别的考试,且在参加国际认证考试之日起12个月内向甲方提出免费复学申请的,甲方应在收到乙方书面复学申请后1-2个月内安排乙方进行日语水平测试及确认复学课程,或者直接合理安排复学课程。
</div>
<div
class=
"commonContent"
>
2、乙方权利与义务
</div>
<div
class=
"commonContent"
>
2.1 乙方权利
</div>
<div
class=
"commonContent"
>
2.1.1 乙方有权向甲方反应其任课教师情况,如出现甲方老师不按时上课、不按教学计划上课等,乙方有权向甲方反映,经甲方核实后决定是否更换教师或纠正教师的不当行为。
</div>
<div
class=
"commonContent"
>
2.1.2 乙方修完所报课程,未通过所报课程相应级别的考试,有权在参加国际认证考试之日起12个月内向甲方书面提出一次免费复学申请。若乙方超出前述时限提出免费复学申请的,甲方有权拒绝。
</div>
<div
class=
"commonContent"
>
2.2 乙方义务
</div>
<div
class=
"commonContent"
>
2.2.1 为保障乙方学习效果,乙方自愿遵守甲方在本协议内指定的教学培训管理规定。
</div>
<div
class=
"commonContent"
>
2.2.2 为有针对性的给乙方提供更多且有效的升学、留学与就业服务机会,乙方须自愿服从甲方安排并参加相关国际认证考试;且乙方拿到国际认证考试成绩后,自愿将国际认证考试相关证书扫描件提交给甲方存档,并允许荣誉展示,作为学员见证资料。
</div>
</div>
</div>
</div>
</div>
</
template
>
src/pages/sale/contractManage.vue
View file @
2f1a10c3
...
...
@@ -283,12 +283,13 @@
},
//跳转至编辑
goContract
(
item
)
{
this
.
$router
.
push
({
path
:
'contractEdit'
,
query
:
{
"Id"
:
item
.
Id
let
routeUrl
=
this
.
$router
.
resolve
({
path
:
"/contractView"
,
query
:
{
}
})
});
window
.
open
(
routeUrl
.
href
,
'_blank'
);
},
//新增修改合同
EditContract
(
obj
)
{
...
...
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