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
d581efe6
Commit
d581efe6
authored
Aug 05, 2021
by
罗超
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/confucius
into master
parents
31fb011b
2c152201
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
1685 additions
and
100 deletions
+1685
-100
contract.js
src/api/sale/contract.js
+38
-1
wechat.js
src/api/system/wechat.js
+48
-0
courserefund-form.vue
src/components/course/courserefund-form.vue
+160
-0
backclass-form.vue
src/components/sale/backclass-form.vue
+7
-7
editOrder-form.vue
src/components/sale/editOrder-form.vue
+6
-6
PropertyStockInShenpi.vue
...ges/administration/AssetsSystem/PropertyStockInShenpi.vue
+4
-4
SuppliesStockInShenpi.vue
...ges/administration/AssetsSystem/SuppliesStockInShenpi.vue
+4
-4
dropSchoolManage.vue
src/pages/administration/dropSchoolManage.vue
+109
-3
contractSign.vue
src/pages/contractSign.vue
+79
-36
courseRefund.vue
src/pages/courseRefund.vue
+105
-38
courseRefundH5.vue
src/pages/courseRefundH5.vue
+369
-0
addWelcome.vue
src/pages/enterprise/addWelcome.vue
+185
-0
welcomeList.vue
src/pages/enterprise/welcomeList.vue
+171
-0
contractRefund.vue
src/pages/sale/contractRefund.vue
+112
-0
weChatConfig.vue
src/pages/system/weChatConfig.vue
+261
-0
routes.js
src/router/routes.js
+27
-1
No files found.
src/api/sale/contract.js
View file @
d581efe6
...
@@ -153,3 +153,40 @@ export function GetMyEducationContractPageList(data) {
...
@@ -153,3 +153,40 @@ export function GetMyEducationContractPageList(data) {
data
data
})
})
}
}
/**
* 获取退课协议管理列表
*
*/
export
function
GetBackClassProtocolPage
(
data
)
{
return
request
({
url
:
'/EducationContract/GetBackClassProtocolPage'
,
method
:
'post'
,
data
})
}
/**
* 获取退课详情
*
*/
export
function
GetBackClassProtocol
(
data
)
{
return
request
({
url
:
'/EducationContract/GetBackClassProtocol'
,
method
:
'post'
,
data
})
}
/**
* 获取签字
*
*/
export
function
SetBackClassProtocolSign
(
data
)
{
return
request
({
url
:
'/EducationContract/SetBackClassProtocolSign'
,
method
:
'post'
,
data
})
}
src/api/system/wechat.js
0 → 100644
View file @
d581efe6
import
request
from
'../../utils/request'
/**
* 获取网站导航分页
*
*/
export
function
getWeChatConfigInfo
(
data
)
{
return
request
({
url
:
'/QYWeChat/GetWeChatConfigInfo'
,
method
:
'post'
,
data
})
}
/**
* 获取网站导航分页
*
*/
export
function
setWeChatConfig
(
data
)
{
return
request
({
url
:
'/QYWeChat/SetWeChatConfig'
,
method
:
'post'
,
data
})
}
/**
* 初始化 同步部门至企业微信
*
*/
export
function
setSyncEduDepartment
(
data
)
{
return
request
({
url
:
'/QYWeChat/SetSyncEduDepartment'
,
method
:
'post'
,
data
})
}
/**
* 初始化 同步员工至企业微信
*
*/
export
function
SetSynvEduEmployee
(
data
)
{
return
request
({
url
:
'/QYWeChat/SetSynvEduEmployee'
,
method
:
'post'
,
data
})
}
\ No newline at end of file
src/components/course/courserefund-form.vue
0 → 100644
View file @
d581efe6
<
template
>
<div
class=
"page-content"
>
<q-table
:pagination=
"pageMsg"
: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"
></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: #67c23a"
>
【已签字】
</span>
<span
v-else
style=
"color: #e95252"
>
【未签字】
</span>
{{
props
.
row
.
StudentName
}}
</q-td>
</
template
>
<
template
v-slot:body-cell-AuditStatus=
"props"
>
<q-td
auto-width
:props=
"props"
>
<span
v-if=
"props.row.AuditStatus == 1||props.row.AuditStatus == 0"
style=
"color: #409eff"
>
审核中
</span>
<span
v-if=
"props.row.AuditStatus == 2"
style=
"color: #67c23a"
>
{{
props
.
row
.
AuditStatusStr
}}
</span>
<span
v-if=
"props.row.AuditStatus == 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
>
</
template
>
<
template
v-slot:body-cell-optioned=
"props"
>
<q-td
:props=
"props"
>
<div>
<el-tooltip
content=
"复制链接发送给客人签字"
placement=
"top"
effect=
"light"
>
<q-btn
flat
v-if=
"
props.row.AuditStatus == 2 &&
(props.row.PartyASign == '' || props.row.PartyASign == null)"
size=
"xs"
icon=
"iconfont icon-qianming"
color=
"accent"
style=
"font-weight: 400"
@
click=
"CopyUrl(props.row)"
label=
"获取合同链接"
/>
</el-tooltip>
<q-btn
flat
size=
"xs"
icon=
"iconfont icon-View"
color=
"accent"
@
click=
"goContract(props.row.Id)"
style=
"font-weight: 400"
label=
"查看"
/>
</div>
</q-td>
</
template
>
</q-table>
</div>
</template>
<
script
>
export
default
{
props
:
{
dataList
:
{
type
:
Array
,
default
:
null
},
loading
:
{
type
:
Boolean
,
default
:
null
}
},
data
()
{
return
{
columns
:
[{
name
:
"ProtocolNum"
,
label
:
"协议编号"
,
align
:
"left"
,
field
:
"ProtocolNum"
,
},
{
name
:
"PartyAName"
,
label
:
"学生名称"
,
field
:
"PartyAName"
,
align
:
"left"
,
},
{
name
:
"OldCourseName"
,
label
:
"课程名称"
,
align
:
"left"
,
field
:
"OldCourseName"
,
},
{
name
:
"CreateByName"
,
label
:
"创建人"
,
align
:
"left"
,
field
:
"CreateByName"
,
},
{
name
:
"CreateTimeStr"
,
label
:
"创建时间"
,
align
:
"left"
,
field
:
"CreateTimeStr"
,
},
{
name
:
"ReceiptId"
,
label
:
"关联退课申请单"
,
align
:
"left"
,
field
:
"ReceiptId"
,
},
{
name
:
"AuditStatus"
,
label
:
"审核状态"
,
align
:
"left"
,
field
:
"AuditStatus"
},
{
name
:
"IsCompanySeal"
,
label
:
"是否盖章"
,
align
:
"left"
,
field
:
"Status"
,
},
{
name
:
"optioned"
,
label
:
"操作"
,
field
:
"RoomId"
,
},
],
pageMsg
:
{
rowsPerPage
:
12
,
},
}
},
created
()
{
},
mounted
()
{},
methods
:
{
//跳转至详情
goContract
(
Id
)
{
this
.
OpenNewUrl
(
'/courseRefund'
,
{
Id
:
Id
})
},
//复制URL
CopyUrl
(
item
)
{
var
oInput
=
document
.
createElement
(
"input"
);
var
url
=
window
.
location
.
host
;
oInput
.
value
=
url
+
"/#/courseRefundH5"
+
`?Id=
${
item
.
Id
}
`
;
document
.
body
.
appendChild
(
oInput
);
oInput
.
select
();
// 选择对象
document
.
execCommand
(
"Copy"
);
// 执行浏览器复制命令
oInput
.
className
=
"oInput"
;
oInput
.
style
.
display
=
"none"
;
this
.
Info
(
"复制成功!"
);
}
}
}
</
script
>
src/components/sale/backclass-form.vue
View file @
d581efe6
...
@@ -160,7 +160,7 @@
...
@@ -160,7 +160,7 @@
</span>
</span>
</div>
</div>
</div>
</div>
<div
class=
"row"
style=
"margin-top:20px;
display:none;
"
>
<div
class=
"row"
style=
"margin-top:20px;"
>
<div
class=
"col-6 q-pr-lg"
>
<div
class=
"col-6 q-pr-lg"
>
<q-input
filled
v-model=
"BackAccountName"
label=
"退还账户名"
></q-input>
<q-input
filled
v-model=
"BackAccountName"
label=
"退还账户名"
></q-input>
</div>
</div>
...
@@ -170,8 +170,8 @@
...
@@ -170,8 +170,8 @@
</div>
</div>
<q-input
filled
stack-label
:dense=
"false"
v-model=
"applyReason"
style=
"margin-top: 20px"
type=
"textarea"
<q-input
filled
stack-label
:dense=
"false"
v-model=
"applyReason"
style=
"margin-top: 20px"
type=
"textarea"
class=
"col-12"
label=
"申请理由"
/>
class=
"col-12"
label=
"申请理由"
/>
<q-input
filled
stack-label
:dense=
"false"
v-model=
"StateMent"
style=
"margin-top: 20px;
display:none
"
type=
"textarea"
<q-input
filled
stack-label
:dense=
"false"
v-model=
"StateMent"
style=
"margin-top: 20px;"
type=
"textarea"
class=
"col-12"
label=
"协议申明"
/>
class=
"col-12"
label=
"协议申明
(在退课协议中显示)
"
/>
<div
class=
"row"
>
<div
class=
"row"
>
<div
class=
"col-12 q-mt-md text-grey-6"
>
<div
class=
"col-12 q-mt-md text-grey-6"
>
上传附件:
<span
class=
"fj-tip"
style=
"font-size: 10px; color: #f00"
>
*单文件限制5M内
</span>
上传附件:
<span
class=
"fj-tip"
style=
"font-size: 10px; color: #f00"
>
*单文件限制5M内
</span>
...
@@ -338,9 +338,10 @@
...
@@ -338,9 +338,10 @@
picIsShow
:
false
,
picIsShow
:
false
,
picObj
:
[],
picObj
:
[],
initialIndex
:
0
,
initialIndex
:
0
,
BackAccountName
:
'工行'
,
//退还户名
BackAccount
:
'123'
,
//退还账户
BackAccountName
:
''
,
//退还户名
StateMent
:
'我是协议'
//协议申明
BackAccount
:
''
,
//退还账户
StateMent
:
''
//协议申明
};
};
},
},
created
()
{
created
()
{
...
@@ -440,7 +441,6 @@
...
@@ -440,7 +441,6 @@
// 预览上传文件
// 预览上传文件
if
(
i
.
Type
==
3
)
{
if
(
i
.
Type
==
3
)
{
this
.
picObj
.
push
(
i
.
Url
);
this
.
picObj
.
push
(
i
.
Url
);
// this.imgList.push(i.Url)
this
.
picIsShow
=
true
;
this
.
picIsShow
=
true
;
}
else
{
}
else
{
if
(
if
(
...
...
src/components/sale/editOrder-form.vue
View file @
d581efe6
...
@@ -74,9 +74,9 @@
...
@@ -74,9 +74,9 @@
<q-select
:disable=
"modityOrderType==2"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
<q-select
:disable=
"modityOrderType==2"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
v-model=
"OrderMsg.OrderSource"
:options=
"SourceEnumList"
emit-value
map-options
class=
"q-pb-lg"
v-model=
"OrderMsg.OrderSource"
:options=
"SourceEnumList"
emit-value
map-options
class=
"q-pb-lg"
label=
"客人来源"
/>
label=
"客人来源"
/>
<q-select
:disable=
"(modityOrderType==2)||(OrderMsg.JoinType==3)"
v-model=
"OrderMsg.HelpEnterId"
:options=
"EmployeeList"
filled
<q-select
:disable=
"(modityOrderType==2)||(OrderMsg.JoinType==3)"
v-model=
"OrderMsg.HelpEnterId"
use-input
label=
"协助老师"
option-label=
"EmployeeName"
option-value=
"Id"
ref=
"EmployeeName"
class=
"col-6 q-pb-lg
"
:options=
"EmployeeList"
filled
use-input
label=
"协助老师"
option-label=
"EmployeeName"
option-value=
"Id
"
emit-value
map-options
@
filter=
"filterFn"
>
ref=
"EmployeeName"
class=
"col-6 q-pb-lg"
emit-value
map-options
@
filter=
"filterFn"
>
<
template
v-slot:no-option
>
<
template
v-slot:no-option
>
<q-item>
<q-item>
<q-item-section
class=
"text-grey"
>
<q-item-section
class=
"text-grey"
>
...
@@ -172,7 +172,7 @@
...
@@ -172,7 +172,7 @@
StartClassHours
:
0
,
//已上课时
StartClassHours
:
0
,
//已上课时
EffectTime
:
''
,
//生效时间
EffectTime
:
''
,
//生效时间
UpOrderId
:
0
,
//前置订单编号
UpOrderId
:
0
,
//前置订单编号
JoinType
:
1
,
//订单报入类型
JoinType
:
1
,
//订单报入类型
},
},
IsShowUpPrice
:
false
,
//是否显示高于定价
IsShowUpPrice
:
false
,
//是否显示高于定价
UnitPrice
:
0
,
UnitPrice
:
0
,
...
@@ -302,7 +302,7 @@
...
@@ -302,7 +302,7 @@
this
.
OrderMsg
.
OrderNature
=
tempData
.
OrderNature
;
this
.
OrderMsg
.
OrderNature
=
tempData
.
OrderNature
;
this
.
OrderMsg
.
OldPreferPrice
=
tempData
.
OldPreferPrice
;
this
.
OrderMsg
.
OldPreferPrice
=
tempData
.
OldPreferPrice
;
this
.
OrderMsg
.
CourseId
=
tempData
.
CourseId
;
this
.
OrderMsg
.
CourseId
=
tempData
.
CourseId
;
this
.
OrderMsg
.
JoinType
=
tempData
.
JoinType
;
this
.
OrderMsg
.
JoinType
=
tempData
.
JoinType
;
this
.
OrderMsg
.
StartClassHours
=
tempData
.
StartClassHours
;
this
.
OrderMsg
.
StartClassHours
=
tempData
.
StartClassHours
;
this
.
OrderMsg
.
IsChaBan
=
tempData
.
IsChaBan
;
this
.
OrderMsg
.
IsChaBan
=
tempData
.
IsChaBan
;
this
.
OrderMsg
.
EffectTime
=
tempData
.
EffectTime
;
this
.
OrderMsg
.
EffectTime
=
tempData
.
EffectTime
;
...
@@ -326,7 +326,7 @@
...
@@ -326,7 +326,7 @@
this
.
OrderMsg
.
IsChaBan
=
this
.
isChaBan
;
this
.
OrderMsg
.
IsChaBan
=
this
.
isChaBan
;
this
.
OrderMsg
.
EffectTime
=
""
;
this
.
OrderMsg
.
EffectTime
=
""
;
this
.
OrderMsg
.
UpOrderId
=
0
;
this
.
OrderMsg
.
UpOrderId
=
0
;
this
.
OrderMsg
.
JoinType
=
1
;
this
.
OrderMsg
.
JoinType
=
1
;
this
.
OrderMsg
.
OrderType
=
this
.
orderType
;
this
.
OrderMsg
.
OrderType
=
this
.
orderType
;
if
(
this
.
OrderMsg
.
OrderType
==
2
)
{
if
(
this
.
OrderMsg
.
OrderType
==
2
)
{
this
.
OrderMsg
.
OrderNature
=
1
;
this
.
OrderMsg
.
OrderNature
=
1
;
...
...
src/pages/administration/AssetsSystem/PropertyStockInShenpi.vue
View file @
d581efe6
...
@@ -728,10 +728,10 @@
...
@@ -728,10 +728,10 @@
})
})
},
},
approvalOrder
(
num
){
approvalOrder
(
num
){
if
(
this
.
GetDetail
.
Is_AuditSelf
==
1
){
//
if(this.GetDetail.Is_AuditSelf==1){
this
.
Error
(
"制单人跟审核人不能相同哟,请转交!"
);
//
this.Error("制单人跟审核人不能相同哟,请转交!");
return
;
//
return;
}
//
}
if
(
this
.
needSign
){
if
(
this
.
needSign
){
if
(
this
.
addMsg
.
SignImage
==
""
){
if
(
this
.
addMsg
.
SignImage
==
""
){
this
.
Error
(
"请签名!"
);
this
.
Error
(
"请签名!"
);
...
...
src/pages/administration/AssetsSystem/SuppliesStockInShenpi.vue
View file @
d581efe6
...
@@ -739,10 +739,10 @@ import {
...
@@ -739,10 +739,10 @@ import {
})
})
},
},
approvalOrder
(
num
){
approvalOrder
(
num
){
if
(
this
.
GetDetail
.
Is_AuditSelf
==
1
){
//
if(this.GetDetail.Is_AuditSelf==1){
this
.
Error
(
"制单人跟审核人不能相同哟,请转交!"
);
//
this.Error("制单人跟审核人不能相同哟,请转交!");
return
;
//
return;
}
//
}
if
(
this
.
needSign
){
if
(
this
.
needSign
){
if
(
this
.
addMsg
.
SignImage
==
""
){
if
(
this
.
addMsg
.
SignImage
==
""
){
this
.
Error
(
"请签名!"
);
this
.
Error
(
"请签名!"
);
...
...
src/pages/administration/dropSchoolManage.vue
View file @
d581efe6
<
style
>
</
style
>
<
template
>
<
template
>
<div>
<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.QOrderId"
label=
"订单编号"
@
clear=
"resetSearch"
maxlength=
"30"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
standout=
"bg-primary text-white"
v-model=
"msg.AuditStatus"
: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.ProtocolNum"
label=
"合同编号"
@
clear=
"resetSearch"
maxlength=
"30"
/>
</div>
<div
class=
"col-3"
>
<q-input
@
change=
"resetSearch"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.PartyAName"
label=
"学生姓名"
@
clear=
"resetSearch"
maxlength=
"30"
/>
</div>
</div>
</div>
<courserefund-form
:loading=
"loading"
:dataList=
"dataList"
></courserefund-form>
<q-pagination
class=
"full-width justify-end"
v-model=
"msg.pageIndex"
color=
"primary"
:max=
"pageCount"
:input=
"true"
@
input=
"changePage"
/>
</div>
</div>
</
template
>
</
template
>
<
script
>
import
{
GetBackClassProtocolPage
}
from
"../../api/sale/contract"
;
import
courserefundForm
from
"../../components/course/courserefund-form"
export
default
{
meta
:
{
title
:
"退课协议管理"
,
},
components
:
{
courserefundForm
},
data
()
{
return
{
loading
:
true
,
msg
:
{
pageIndex
:
1
,
pageSize
:
12
,
PartyAName
:
''
,
AuditStatus
:
-
1
,
QOrderId
:
''
,
ProtocolNum
:
''
,
IsQueryAll
:
1
},
pageCount
:
0
,
dataList
:
[],
//状态下拉
StatusOpts
:
[{
Id
:
-
1
,
Name
:
"不限"
,
},
{
Id
:
1
,
Name
:
"审核中"
,
},
{
Id
:
2
,
Name
:
"审核通过"
,
},
{
Id
:
3
,
Name
:
"驳回"
,
},
],
};
},
created
()
{
},
mounted
()
{
this
.
getList
();
},
methods
:
{
//获取校区列表
getList
()
{
this
.
loading
=
true
;
GetBackClassProtocolPage
(
this
.
msg
).
then
((
res
)
=>
{
this
.
loading
=
false
;
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
.
PageData
;
this
.
pageCount
=
res
.
Data
.
PageCount
;
}
});
},
//重新查询
resetSearch
()
{
this
.
msg
.
pageIndex
=
1
;
this
.
getList
();
},
//分页改变
changePage
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getList
();
}
},
};
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
src/pages/contractSign.vue
View file @
d581efe6
...
@@ -28,18 +28,21 @@
...
@@ -28,18 +28,21 @@
justify-content
:
space-around
;
justify-content
:
space-around
;
align-items
:
center
;
align-items
:
center
;
}
}
.signature
.icoDicv
{
width
:
40px
;
.signature
.icoDicv
{
height
:
40px
;
width
:
40px
;
height
:
40px
;
background
:
gray
;
background
:
gray
;
border-radius
:
50%
;
border-radius
:
50%
;
color
:
#fff
;
color
:
#fff
;
text-align
:
center
;
text-align
:
center
;
line-height
:
40px
;
line-height
:
40px
;
}
}
.signature
.icoDicv
i
{
font-size
:
25px
;
.signature
.icoDicv
i
{
font-size
:
25px
;
}
}
</
style
>
</
style
>
<
template
>
<
template
>
<div
class=
"signature"
@
touchmove
.
prevent
>
<div
class=
"signature"
@
touchmove
.
prevent
>
...
@@ -70,7 +73,8 @@
...
@@ -70,7 +73,8 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
{
import
{
SetEducationContractSign
SetEducationContractSign
,
SetBackClassProtocolSign
}
from
'../api/sale/contract'
}
from
'../api/sale/contract'
export
default
{
export
default
{
data
()
{
data
()
{
...
@@ -83,11 +87,15 @@
...
@@ -83,11 +87,15 @@
y
:
0
,
y
:
0
,
},
},
moving
:
false
,
// 是否正在绘制中且移动
moving
:
false
,
// 是否正在绘制中且移动
msg
:{
msg
:
{
ContractId
:
0
,
ContractId
:
0
,
Sign
:
''
Sign
:
''
},
},
Money
:
0
Money
:
0
,
Type
:
1
,
//1为电子合同签字 2为退课协议签字
BackMsg
:
{
Id
:
0
}
};
};
},
},
mounted
()
{
mounted
()
{
...
@@ -100,10 +108,15 @@
...
@@ -100,10 +108,15 @@
if
(
this
.
$route
.
query
.
ContractId
)
{
if
(
this
.
$route
.
query
.
ContractId
)
{
this
.
msg
.
ContractId
=
this
.
$route
.
query
.
ContractId
;
this
.
msg
.
ContractId
=
this
.
$route
.
query
.
ContractId
;
}
}
if
(
this
.
$route
.
query
.
Money
){
if
(
this
.
$route
.
query
.
Money
)
{
this
.
Money
=
this
.
$route
.
query
.
Money
;
this
.
Money
=
this
.
$route
.
query
.
Money
;
}
}
if
(
this
.
$route
.
query
.
Id
)
{
this
.
BackMsg
.
Id
=
this
.
$route
.
query
.
Id
;
}
if
(
this
.
$route
.
query
.
Type
)
{
this
.
Type
=
this
.
$route
.
query
.
Type
;
}
},
},
methods
:
{
methods
:
{
// 触摸(开始)
// 触摸(开始)
...
@@ -214,6 +227,7 @@
...
@@ -214,6 +227,7 @@
},
},
//提交数据
//提交数据
SaveMsg
()
{
SaveMsg
()
{
if
(
this
.
Type
==
1
)
{
SetEducationContractSign
(
this
.
msg
).
then
(
res
=>
{
SetEducationContractSign
(
this
.
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
this
.
$q
.
notify
({
...
@@ -232,6 +246,26 @@
...
@@ -232,6 +246,26 @@
});
});
}
}
})
})
}
if
(
this
.
Type
==
2
){
SetBackClassProtocolSign
(
this
.
BackMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'保存成功!'
,
position
:
'top'
})
this
.
$router
.
push
({
path
:
'/courseRefundH5'
,
query
:
{
Id
:
this
.
BackMsg
.
Id
,
}
});
}
})
}
},
},
//base64转Blob
//base64转Blob
...
@@ -258,12 +292,21 @@
...
@@ -258,12 +292,21 @@
},
},
//返回上一级
//返回上一级
goback
()
{
goback
()
{
if
(
this
.
Type
==
1
){
this
.
$router
.
push
({
this
.
$router
.
push
({
path
:
'/contractConfirm'
,
path
:
'/contractConfirm'
,
query
:
{
query
:
{
ContractId
:
this
.
msg
.
ContractId
ContractId
:
this
.
msg
.
ContractId
}
}
});
});
}
else
{
this
.
$router
.
push
({
path
:
'/courseRefundH5'
,
query
:
{
Id
:
this
.
BackMsg
.
Id
}
});
}
},
},
},
},
};
};
...
...
src/pages/courseRefund.vue
View file @
d581efe6
...
@@ -29,19 +29,22 @@
...
@@ -29,19 +29,22 @@
.TuiContract
{
.TuiContract
{
position
:
absolute
;
position
:
absolute
;
bottom
:
28px
;
bottom
:
28px
;
right
:
13
0px
;
right
:
7
0px
;
}
}
.Tui_Jiafang
{
display
:
flex
;
.Tui_Jiafang
{
font-size
:
20px
;
display
:
flex
;
margin-bottom
:
20px
;
font-size
:
20px
;
margin-bottom
:
20px
;
}
}
.Tui_Inner
{
.Tui_Inner
{
text-indent
:
40px
;
text-indent
:
40px
;
font-size
:
20px
;
font-size
:
20px
;
line-height
:
35px
;
line-height
:
35px
;
margin-bottom
:
10px
;
margin-bottom
:
10px
;
}
}
.TuitractInput
{
.TuitractInput
{
border
:
0
;
border
:
0
;
display
:
inline-block
;
display
:
inline-block
;
...
@@ -51,82 +54,146 @@
...
@@ -51,82 +54,146 @@
text-align
:
center
;
text-align
:
center
;
text-indent
:
0
;
text-indent
:
0
;
}
}
.Tui_SignZhang
{
.Tui_SignZhang
{
display
:
flex
;
display
:
flex
;
font-size
:
20px
;
font-size
:
20px
;
justify-content
:
space-between
;
justify-content
:
space-between
;
margin-bottom
:
20px
;
margin-bottom
:
20px
;
}
}
</
style
>
</
style
>
<
template
>
<
template
>
<div
class=
"TuitractView"
>
<div
class=
"TuitractView"
>
<div
class=
"firstPage"
>
<div
class=
"firstPage"
>
<div
class=
"operationTitle"
>
<div
class=
"operationTitle"
>
<div
class=
"operationAgree"
>
培训课程退款协议
</div>
<div
class=
"operationAgree"
>
培训课程退款协议
</div>
<div
class=
"TuiContract"
>
合约编号:
123
</div>
<div
class=
"TuiContract"
>
合约编号:
{{
dataList
.
ProtocolNum
}}
</div>
</div>
</div>
<div
class=
"Tui_Jiafang"
>
<div
class=
"Tui_Jiafang"
>
<div
style=
"margin-right:100px;"
>
甲方:
</div>
<div
style=
"margin-right:100px;"
>
甲方:
{{
dataList
.
PartyAName
}}
</div>
<div>
(家长/监护人):
</div>
<div>
(家长/监护人):
{{
dataList
.
PartyAGuardian
}}
</div>
</div>
</div>
<div
class=
"Tui_Jiafang"
>
<div
class=
"Tui_Jiafang"
>
<div
style=
"margin-right:150px;"
>
乙方:
</div>
<div
style=
"margin-right:150px;"
>
乙方:
{{
dataList
.
PartyBName
}}
</div>
<div>
法定代表人:
</div>
<div>
法定代表人:
{{
dataList
.
PartyBLegal
}}
</div>
</div>
</div>
<div
class=
"Tui_Inner"
>
<div
class=
"Tui_Inner"
>
甲乙双方经平等友好协商就
<div
class=
"TuitractInput"
style=
"width: 90px;"
>
1988
</div>
年
甲乙双方经平等友好协商就
<div
class=
"TuitractInput"
style=
"width: 90px;"
>
{{
getData
(
dataList
.
CreateTimeStr
,
1
)
}}
</div>
年
<div
class=
"TuitractInput"
style=
"width: 80px;"
>
12
</div>
月
<div
class=
"TuitractInput"
style=
"width: 80px;"
>
12
</div>
日
<div
class=
"TuitractInput"
style=
"width: 80px;"
>
{{
getData
(
dataList
.
CreateTimeStr
,
2
)
}}
</div>
月
<div
class=
"TuitractInput"
style=
"width: 80px;"
>
{{
getData
(
dataList
.
CreateTimeStr
,
3
)
}}
</div>
日
签订的《培训课程协议》解除合作关系。
签订的《培训课程协议》解除合作关系。
</div>
</div>
<div
class=
"Tui_Inner"
>
第一条:原协议内容
</div>
<div
class=
"Tui_Inner"
>
第一条:原协议内容
</div>
<div
class=
"Tui_Inner"
>
<div
class=
"Tui_Inner"
>
原协议报名人员:
<div
class=
"TuitractInput"
style=
"width: 300px;"
>
1988
</div>
原协议报名人员:
<div
class=
"TuitractInput"
style=
"width: 300px;"
>
{{
dataList
.
OldSaleMan
}}
</div>
</div>
</div>
<div
class=
"Tui_Inner"
>
<div
class=
"Tui_Inner"
>
原报名项目:
<div
class=
"TuitractInput"
style=
"width: 300px;"
>
1988
</div>
原报名项目:
<div
class=
"TuitractInput"
style=
"width: 300px;"
>
{{
dataList
.
CNMoneyStr
}}
</div>
</div>
</div>
<div
class=
"Tui_Inner"
>
<div
class=
"Tui_Inner"
>
原报名项目原价:
<div
class=
"TuitractInput"
style=
"width: 100px;"
>
1988
</div>
原报名项目原价:
<div
class=
"TuitractInput"
style=
"width: 100px;"
>
{{
dataList
.
OldSellPrice
}}
</div>
折后(优惠)价:
<div
class=
"TuitractInput"
style=
"width: 100px;"
>
1988
</div>
折后(优惠)价:
<div
class=
"TuitractInput"
style=
"width: 100px;"
>
{{
dataList
.
OldDiscountMoney
}}
</div>
</div>
</div>
<div
class=
"Tui_Inner"
>
<div
class=
"Tui_Inner"
>
原协议已收学费:
<div
class=
"TuitractInput"
style=
"width: 300px;text-align:left;"
>
原协议已收学费:
<div
class=
"TuitractInput"
style=
"width: 300px;text-align:left;"
>
大写:
大写:
{{
dataList
.
OldIncomeStr
}}
</div>
</div>
(¥
<div
class=
"TuitractInput"
style=
"width: 100px;"
>
12
</div>
元整)。
(¥
<div
class=
"TuitractInput"
style=
"width: 100px;"
>
{{
dataList
.
OldIncome
}}
</div>
元整)。
</div>
</div>
<div
class=
"Tui_Inner"
>
<div
class=
"Tui_Inner"
>
原收据编号:
<div
class=
"TuitractInput"
style=
"width: 150px;"
></div>
原收据编号:
<div
class=
"TuitractInput"
style=
"width: 150px;"
>
{{
dataList
.
OldFinaceNum
}}
</div>
</div>
</div>
<div
class=
"Tui_Inner"
>
<div
class=
"Tui_Inner"
>
原收款人:
<div
class=
"TuitractInput"
style=
"width: 150px;"
></div>
原收款人:
<div
class=
"TuitractInput"
style=
"width: 150px;"
>
{{
dataList
.
OldReceiveMan
}}
</div>
</div>
</div>
<div
class=
"Tui_Inner"
>
<div
class=
"Tui_Inner"
>
第二条:乙方共计课时
<div
class=
"TuitractInput"
style=
"width: 80px;"
></div>
节;已销课时
第二条:乙方共计课时
<div
class=
"TuitractInput"
style=
"width: 80px;"
>
{{
dataList
.
TotalClassHours
}}
</div>
节;已销课时
<div
class=
"TuitractInput"
style=
"width: 80px;"
></div>
节:剩余课时
<div
class=
"TuitractInput"
style=
"width: 80px;"
>
{{
dataList
.
CompleteHours
}}
</div>
节:剩余课时
<div
class=
"TuitractInput"
style=
"width: 80px;"
></div>
节
<div
class=
"TuitractInput"
style=
"width: 80px;"
>
{{
dataList
.
SurplusHours
}}
</div>
节
</div>
</div>
<div
class=
"Tui_Inner"
>
<div
class=
"Tui_Inner"
>
甲方应退还乙方未上课时费用
<div
class=
"TuitractInput"
style=
"width: 200px;"
>
五千六百八十元整
</div>
甲方应退还乙方未上课时费用
<div
class=
"TuitractInput"
style=
"width: 200px;"
>
{{
dataList
.
CNMoneyStr
}}
</div>
(¥
<div
class=
"TuitractInput"
style=
"width: 80px;"
></div>
元整),原协
(¥
<div
class=
"TuitractInput"
style=
"width: 150px;"
>
{{
dataList
.
BackMoney
}}
</div>
),原协
议自动终止、收据自动失效。退还帐户名
<div
class=
"TuitractInput"
style=
"width: 200px;"
></div>
,退还帐号:
<div
class=
"TuitractInput"
style=
"width: 300px;"
></div>
议自动终止、收据自动失效。退还帐户名
<div
class=
"TuitractInput"
style=
"width: 200px;"
>
{{
dataList
.
BackAccountName
}}
</div>
,退还帐号:
<div
class=
"TuitractInput"
style=
"width: 200px;"
>
{{
dataList
.
BackAccount
}}
</div>
退还学费=乙方已缴总学费-已上课程学费-(乙方已缴学费-已上课程学费)*10%,其中“(乙方已缴课程学费)*10%”为违约金。
退还学费=乙方已缴总学费-已上课程学费-(乙方已缴学费-已上课程学费)*10%,其中“(乙方已缴课程学费)*10%”为违约金。
</div>
</div>
<div
class=
"Tui_Inner"
>
<div
class=
"Tui_Inner"
>
第三条:乙方应将原协议和收据原件交还甲方,若原件无法交还,请乙方
<br/>
在此声明:
第三条:乙方应将原协议和收据原件交还甲方,若原件无法交还,请乙方
<br
/>
在此声明:
<div
class=
"TuitractInput"
style=
"width:
300px;"
>
</div>
<div
class=
"TuitractInput"
style=
"width:
750px;"
>
{{
dataList
.
StateMent
}}
</div>
</div>
</div>
<div
class=
"Tui_Inner"
>
<div
class=
"Tui_Inner"
>
第四条:本协议自签订之日起正式生效。
第四条:本协议自签订之日起正式生效。
</div>
</div>
<div
class=
"Tui_SignZhang"
>
<div
class=
"Tui_SignZhang"
>
<div>
甲方(家长/监护人)签字(盖章):
</div>
<div>
甲方(家长/监护人)签字(盖章):
{{
dataList
.
PartyASign
}}
</div>
<div>
甲方(家长/监护人)签字(盖章):
</div>
<div>
乙方签字(盖章):
{{
dataList
.
PartyBSign
}}
</div>
</div>
</div>
<div
class=
"Tui_SignZhang"
>
<div
class=
"Tui_SignZhang"
>
<div>
签署日期:
</div>
<div>
签署日期:
{{
dataList
.
PartyASignDate
}}
</div>
<div>
签署日期:
</div>
<div>
签署日期:
{{
dataList
.
PartyBSignDate
}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
<
script
>
import
{
GetBackClassProtocol
}
from
"../api/sale/contract"
;
export
default
{
meta
:
{
title
:
"退课协议管理"
,
},
data
()
{
return
{
msg
:
{
Id
:
0
},
dataList
:
{},
};
},
created
()
{
},
mounted
()
{
if
(
this
.
$route
.
query
.
Id
){
this
.
msg
.
Id
=
this
.
$route
.
query
.
Id
;
}
this
.
getList
();
},
methods
:
{
//获取校区列表
getList
()
{
this
.
loading
=
true
;
GetBackClassProtocol
(
this
.
msg
).
then
((
res
)
=>
{
this
.
loading
=
false
;
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
;
console
.
log
(
this
.
dataList
,
"this.dataList "
);
}
});
},
//获取日期
getData
(
dateStr
,
type
){
if
(
dateStr
){
let
timeOne
=
dateStr
.
split
(
' '
)[
0
];
let
Year
=
timeOne
.
split
(
'-'
)[
0
];
let
Month
=
timeOne
.
split
(
'-'
)[
1
];
let
day
=
timeOne
.
split
(
'-'
)[
2
];
if
(
type
==
1
){
return
Year
}
if
(
type
==
2
){
return
Month
}
if
(
type
==
3
){
return
day
}
}
}
},
};
</
script
>
src/pages/courseRefundH5.vue
0 → 100644
View file @
d581efe6
<
style
>
.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
;
}
.TCdiv_content
.NavFixed
{
position
:
fixed
;
top
:
0
;
width
:
100%
;
z-index
:
200
;
background
:
#fff
;
}
.TCdiv_content
.navHidden
{
width
:
100%
;
overflow
:
hidden
;
height
:
3rem
;
}
.TCdiv_content
.navHidden
.wrap
{
width
:
100%
;
/* height: 3rem; */
overflow-x
:
scroll
;
overflow-y
:
hidden
;
}
.TCdiv_content
.navHidden
.Navul
{
width
:
28rem
;
padding
:
0
;
display
:
flex
;
height
:
3rem
;
line-height
:
3rem
;
margin
:
0
;
border-bottom
:
1px
solid
#ccc
;
}
.TCdiv_content
.navHidden
.Navul
li
{
display
:
inline-block
;
margin-left
:
1rem
;
box-sizing
:
border-box
;
cursor
:
pointer
;
font-size
:
1rem
;
cursor
:
pointer
;
}
.navHidden
.ActiveLi
{
border-bottom
:
2px
solid
#24ade5
;
}
.CisHideen
{
display
:
none
;
overflow
:
hidden
;
}
.contractTitle
{
font-size
:
1.2rem
;
margin-bottom
:
10px
;
}
.ContractMain
{
/* padding: 100px 15px 80px 15px; */
position
:
relative
;
background
:
#fff
;
min-height
:
100vh
;
}
.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
;
margin-bottom
:
5px
;
}
.conReFund_Suojin
{
text-indent
:
20px
;
display
:
flex
;
font-size
:
1rem
;
flex-wrap
:
wrap
;
line-height
:
26px
;
margin-bottom
:
10px
;
}
.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%
;
}
.TCdiv_content
.gzqzUl
{
margin
:
0
;
padding
:
0
;
}
.TCdiv_content
.gzqzUl
li
{
border-bottom
:
1px
solid
#ddd
;
padding
:
14px
;
position
:
relative
;
box-sizing
:
border-box
;
list-style-type
:
none
;
}
.TCdiv_content
.gzqzUl
.bgli
{
background
:
#eee
;
width
:
100%
;
padding
:
0
!important
;
height
:
20px
;
}
.CourseBackSign
{
display
:
flex
;
font-size
:
1rem
;
margin-bottom
:
1rem
;
}
.TuitractInput
{
border
:
0
;
display
:
inline-block
;
border-bottom
:
1px
solid
#c0c0c0
;
width
:
2rem
;
font-size
:
1rem
;
text-align
:
center
;
text-indent
:
0
;
}
</
style
>
<
template
>
<div
class=
"TcConfirmMain"
>
<div
class=
"TCdiv_content"
>
<!-- 签字 -->
<div
class=
"signSpan"
>
<div
@
click=
"goSign()"
class=
"sign"
>
<span
style=
"padding:0;"
><i
style=
"font-size:1.2rem"
class=
"iconfont icon-qianming"
></i></span>
<span
style=
"font-size:1.2rem;margin-left:0.2rem;"
>
签字
</span>
<!--
<span
style=
"font-size:1.2rem;margin-left:0.2rem;"
>
重新签字
</span>
-->
</div>
</div>
<div
class=
"NavFixed"
>
<p
style=
"background:#24ade5;text-align:center;color:#fff;padding:6px 0;font-size:1rem;margin-bottom:0;"
>
培训课程退款协议
</p>
</div>
<div
class=
"ContractMain"
>
<div
style=
"padding:60px 15px 80px 15px;"
>
<div
class=
"CourseBackSign"
>
<div>
甲方:
{{
dataList
.
PartyAName
}}
</div>
<div
style=
"margin-left:3rem;"
>
(家长/监护人):
{{
dataList
.
PartyAGuardian
}}
</div>
</div>
<div
class=
"CourseBackSign"
>
<div>
乙方:
{{
dataList
.
PartyBName
}}
</div>
<div
style=
"margin-left:3rem;"
>
法定代表人:
{{
dataList
.
PartyBLegal
}}
</div>
</div>
<div
class=
"conReFund_Suojin"
>
甲乙双方经平等友好协商就
<div
class=
"TuitractInput"
style=
"width:4rem"
>
{{
getData
(
dataList
.
CreateTimeStr
,
1
)
}}
</div>
年
<div
class=
"TuitractInput"
style=
"width:2rem"
>
{{
getData
(
dataList
.
CreateTimeStr
,
2
)
}}
</div>
月
<div
class=
"TuitractInput"
style=
"width:2rem"
>
{{
getData
(
dataList
.
CreateTimeStr
,
3
)
}}
</div>
日签订的《培训课程协议》
解除合作关系。
</div>
<div
class=
"conReFund_Suojin"
>
第一条:原协议内容
</div>
<div
class=
"conReFund_Suojin"
>
原协议报名人员:
<div
class=
"TuitractInput"
style=
"width:14rem;text-align:left;"
>
{{
dataList
.
OldSaleMan
}}
</div>
</div>
<div
class=
"conReFund_Suojin"
>
原报名项目:
<div
class=
"TuitractInput"
style=
"width:16rem;text-align:left;"
>
{{
dataList
.
CNMoneyStr
}}
</div>
</div>
<div
class=
"conReFund_Suojin"
>
原报名项目原价:
<div
class=
"TuitractInput"
style=
"width:14rem;text-align:left;"
>
{{
dataList
.
OldSellPrice
}}
</div>
</div>
<div
class=
"conReFund_Suojin"
>
折后(优惠)价:
<div
class=
"TuitractInput"
style=
"width:14rem;text-align:left;"
>
{{
dataList
.
OldDiscountMoney
}}
</div>
</div>
<div
class=
"conReFund_Suojin"
>
原协议已收学费:
<div
class=
"TuitractInput"
style=
"width:14rem;text-align:left;"
>
大写:
{{
dataList
.
OldIncomeStr
}}
</div>
(¥
<div
class=
"TuitractInput"
style=
"width:4rem;"
>
{{
dataList
.
OldIncome
}}
</div>
元整)
</div>
<div
class=
"conReFund_Suojin"
>
原收据编号:
<div
class=
"TuitractInput"
style=
"width:16rem;text-align:left;"
>
{{
dataList
.
OldFinaceNum
}}
</div>
</div>
<div
class=
"conReFund_Suojin"
>
原收款人:
<div
class=
"TuitractInput"
style=
"width:17rem;text-align:left;"
>
{{
dataList
.
OldReceiveMan
}}
</div>
</div>
<div
class=
"conReFund_Suojin"
>
第二条:乙方共计课时
<div
class=
"TuitractInput"
style=
"width:3rem;"
>
{{
dataList
.
TotalClassHours
}}
</div>
节;已销课时
<div
class=
"TuitractInput"
style=
"width:3rem;"
>
{{
dataList
.
CompleteHours
}}
</div>
节:剩余课时
<div
class=
"TuitractInput"
style=
"width:3rem;"
>
{{
dataList
.
SurplusHours
}}
</div>
节;
</div>
<div
class=
"conReFund_Suojin"
>
甲方应退还乙方未上课时费用
<div
class=
"TuitractInput"
style=
"width:9rem;text-align:left;"
>
{{
dataList
.
CNMoneyStr
}}
</div>
(¥
<div
class=
"TuitractInput"
style=
"width:4rem;text-align:left;"
>
{{
dataList
.
BackMoney
}}
</div>
元整),原协议自动终、收据自动失效。
</div>
<div
class=
"conReFund_Suojin"
style=
"text-indent:0;"
>
退还帐户名:
<div
class=
"TuitractInput"
style=
"width:17rem;text-align:left;"
>
{{
dataList
.
BackAccountName
}}
</div>
</div>
<div
class=
"conReFund_Suojin"
style=
"text-indent:0;"
>
退还账号:
<div
class=
"TuitractInput"
style=
"width:18rem;text-align:left;"
>
{{
dataList
.
BackAccount
}}
</div>
</div>
<div
class=
"conReFund_Suojin"
style=
"text-indent:0;"
>
退还学费=乙方已缴总学费-已上课程学费-(乙方已缴学费-已上课程学费)*10%,其中“(乙方已缴课程学费)*10%”为违约金。
</div>
<div
class=
"conReFund_Suojin"
>
第三条:乙方应将原协议和收据原件交还甲方,若原件无法交还,请乙方
</div>
<div
class=
"conReFund_Suojin"
style=
"text-indent:0;"
>
在此声明:
<div
class=
"TuitractInput"
style=
"width:18rem;text-align:left;"
>
{{
dataList
.
StateMent
}}
</div>
</div>
<div
class=
"conReFund_Suojin"
>
第四条:本协议自签订之日起正式生效。
</div>
<div
class=
"conReFund_Suojin"
>
甲方(家长/监护人)签字(盖章):
{{
dataList
.
PartyASign
}}
</div>
<div
class=
"conReFund_Suojin"
>
签署日期:
{{
dataList
.
PartyASignDate
}}
</div>
<div
class=
"conReFund_Suojin"
>
乙方签字(盖章):
{{
dataList
.
PartyBSign
}}
</div>
<div
class=
"conReFund_Suojin"
>
签署日期:
{{
dataList
.
PartyBSignDate
}}
</div>
</div>
</div>
</div>
</div>
</
template
>
<
script
>
import
{
GetBackClassProtocol
}
from
'../api/sale/contract'
export
default
{
data
()
{
return
{
dataList
:
[],
dialogVisible
:
false
,
gmsg
:
{
Id
:
1
},
dataList
:
{},
ActiveTab
:
1
,
};
},
created
()
{
if
(
this
.
$route
.
query
.
Id
)
{
this
.
gmsg
.
Id
=
this
.
$route
.
query
.
Id
;
this
.
gmsg
.
Id
=
1
;
this
.
getList
();
}
this
.
getList
();
},
methods
:
{
//获取数据
getList
()
{
GetBackClassProtocol
(
this
.
gmsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
;
console
.
log
(
res
,
'数据'
);
}
})
},
//获取日期
getData
(
dateStr
,
type
)
{
if
(
dateStr
)
{
let
timeOne
=
dateStr
.
split
(
' '
)[
0
];
let
Year
=
timeOne
.
split
(
'-'
)[
0
];
let
Month
=
timeOne
.
split
(
'-'
)[
1
];
let
day
=
timeOne
.
split
(
'-'
)[
2
];
if
(
type
==
1
)
{
return
Year
}
if
(
type
==
2
)
{
return
Month
}
if
(
type
==
3
)
{
return
day
}
}
},
//跳转至合同签名
goSign
()
{
this
.
$router
.
push
({
path
:
'/contractSign'
,
query
:
{
Id
:
this
.
gmsg
.
Id
,
Type
:
2
}
});
}
},
mounted
()
{}
};
</
script
>
src/pages/enterprise/addWelcome.vue
0 → 100644
View file @
d581efe6
<
style
>
@import
"../financial/css/cssReset.css"
;
.addwelcome
{
justify-content
:
space-between
;
}
.addwelcome
.box_l
{
width
:
400px
;
border-radius
:
6px
;
margin-right
:
15px
;
background
:
#fff
;
}
.addwelcome
.boxl_title
{
width
:
100%
;
height
:
56px
;
display
:
flex
;
align-items
:
center
;
border-bottom
:
1px
solid
#e8e8e8
;
}
.addwelcome
.box_r
{
width
:
1px
;
flex
:
1
;
border-radius
:
6px
;
background
:
#fff
;
padding
:
20px
;
}
</
style
>
<
template
>
<div
class=
"addwelcome page-body row"
style=
"background: transparent;"
>
<div
class=
"box_l"
>
<div
class=
"boxl_title"
>
<span
style=
"margin-left:24px ;color: rgba(0,0,0,.85); font-weight: 500; font-size: 16px;"
>
客户账号
</span>
</div>
</div>
<div
class=
"box_r"
>
<el-form
ref=
"addMsg"
:model=
"addMsg"
label-width=
"120px"
>
<el-form-item
label=
"企业微信成员:"
>
<el-radio-group
v-model=
"addMsg.membertype"
>
<el-radio
:label=
"1"
>
通用
</el-radio>
<el-radio
:label=
"2"
>
指定企业成员
</el-radio>
</el-radio-group>
<el-button
size=
"small"
style=
"margin-left: 20px;"
v-if=
"addMsg.membertype==2"
@
click=
'getMember'
>
选择成员
</el-button>
<span
v-if=
"addMsg.ryList.length>0"
style=
"margin-left: 15px;"
>
已选择
{{
addMsg
.
ryList
.
length
}}
名成员
</span>
<span
v-if=
"addMsg.ryList.length>0"
style=
"cursor: pointer;color: #1890ff;margin-left: 15px;"
@
click=
'addMsg.ryList =[],showMember=[]'
>
重置
</span>
</el-form-item>
<el-form-item
label=
"文本内容:"
>
<el-input
type=
"textarea"
placeholder=
"请输入内容"
v-model=
"addMsg.Content"
style=
"width: 60%;"
:rows=
"4"
></el-input>
<div>
<el-button
size=
"small"
@
click=
'insert'
>
+插入客户名称
</el-button>
</div>
</el-form-item>
<el-form-item
label=
"添加内容:"
>
<el-tooltip
placement=
"top"
>
<div
slot=
"content"
>
<div
style=
"display: flex;align-items: center;"
></div>
</div>
<el-button
size=
"small"
>
+添加图片/图文/小程序
</el-button>
</el-tooltip>
</el-form-item>
</el-form>
</div>
<!-- 人员选择 -->
<el-dialog
custom-class=
'w700'
title=
"选择人员"
:visible
.
sync=
"outerVisible"
center
>
<div
class=
"fl"
style=
"width: 300px; margin: 0 20px;"
>
<p
style=
"margin: 0 0 10px 0;"
>
选择:
<el-input
class=
'w200'
placeholder=
"输入关键字进行过滤"
v-model=
"filterText"
>
</el-input>
</p>
<el-tree
class=
'ApprovalProcessBg'
:data=
"memberList"
show-checkbox
:filter-node-method=
"filterNode"
ref=
"tree"
:props=
"defaultProps"
:render-after-expand=
"false"
node-key=
"Id"
:check-on-click-node=
"true"
@
check-change=
"handleNodeChange"
>
</el-tree>
</div>
<div
class=
"fl"
>
<p
style=
"margin: 0 0 20px 0;"
>
已选:
</p>
<div
class=
"Approval_yxList"
>
<li
v-for=
"(item,index) in showMember"
>
{{
item
.
EmployeeName
}}
<i
@
click=
"mySetCheckedKeys(item.Id,index)"
class=
"el-icon-circle-close showMemberIcon"
></i>
</li>
</div>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<button
class=
"hollowFixedBtn"
@
click=
"outerVisible = false"
>
取消
</button>
<button
class=
"normalBtn"
type=
"primary"
@
click=
"getmember"
>
确实
</button>
</div>
</el-dialog>
</div>
</
template
>
<
script
>
import
{
queryEmployee
}
from
'../../api/users/user'
export
default
{
meta
:
{
title
:
"欢迎语编辑"
},
name
:
"welcomeList"
,
data
()
{
return
{
loading
:
false
,
outerVisible
:
false
,
//选择人员弹窗
filterText
:
''
,
//人员选择 帅选
memberList
:
[],
//
showMember
:
[],
addMsg
:
{
membertype
:
1
,
ryList
:
[],
Content
:
""
,
},
defaultProps
:
{
children
:
'ChildList'
,
label
:
'EmployeeName'
,
},
}
},
created
()
{
},
methods
:
{
getMember
()
{
this
.
outerVisible
=
true
;
this
.
dialogTitle
=
this
.
$t
(
'fnc.xzrenyuan'
);
queryEmployee
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
memberList
=
res
.
Data
;
}
}).
catch
(()
=>
{
})
var
arr
=
[];
this
.
showMember
.
forEach
(
x
=>
{
arr
.
push
(
x
.
Id
);
})
if
(
this
.
$refs
.
tree
)
{
this
.
$refs
.
tree
.
setCheckedKeys
(
arr
);
}
},
mySetCheckedKeys
(
id
,
index
)
{
var
arr
=
[];
this
.
showMember
.
splice
(
index
,
1
);
this
.
showMember
.
forEach
(
x
=>
{
arr
.
push
(
x
.
Id
);
})
if
(
this
.
$refs
.
tree
)
{
this
.
$refs
.
tree
.
setCheckedKeys
(
arr
);
}
},
handleNodeChange
(
data
,
checked
)
{
data
.
IsCheck
=
checked
;
let
res
=
this
.
$refs
.
tree
.
getCheckedNodes
(
true
,
true
);
this
.
showMember
=
[];
res
.
forEach
(
x
=>
{
var
obj
=
{
EmployeeName
:
x
.
EmployeeName
,
Id
:
x
.
Id
}
this
.
showMember
.
push
(
obj
)
})
},
filterNode
(
value
,
data
)
{
if
(
!
value
)
return
true
;
return
data
.
DepartmentName
.
indexOf
(
value
)
!==
-
1
;
},
getmember
()
{
//人员确定选择
this
.
outerVisible
=
false
;
this
.
addMsg
.
ryList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
showMember
))
},
insert
(){
this
.
addMsg
.
Content
=
this
.
addMsg
.
Content
+
'##客户名称##'
}
}
}
</
script
>
\ No newline at end of file
src/pages/enterprise/welcomeList.vue
0 → 100644
View file @
d581efe6
<
template
>
<div
class=
"welcomeList page-body"
>
<!--
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
</div>
</div>
-->
<div
class=
"page-content"
>
<q-table
:pagination=
"msg"
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
class=
"sticky-column-table"
separator=
"none"
title=
""
:data=
"data"
:columns=
"columns"
row-key=
"name"
>
<template
v-slot:top=
"props"
>
<div
class=
"col-2 q-table__title"
>
欢迎语列表
</div>
<q-space
/>
<q-btn
color=
"accent"
style=
"float:right;margin-right:0;"
size=
"sm"
class=
"q-mr-md"
icon=
"add"
label=
"新增欢迎语"
@
click=
"goadd()"
></q-btn>
</
template
>
<
template
v-slot:body-cell-Type=
"props"
>
<q-td
:props=
"props"
>
<span
v-if=
"props.row.Type==1"
>
图文
</span>
<span
v-if=
"props.row.Type==2"
>
图片
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-Content=
"props"
>
<q-td
:props=
"props"
>
<div
style=
"max-width: 800px;white-space: normal;"
>
{{
props
.
row
.
Content
}}
</div>
</q-td>
</
template
>
<
template
v-slot:body-cell-optioned=
"props"
>
<q-td
:props=
"props"
>
<q-btn
flat
size=
"xs"
icon=
"edit"
style=
"font-weight:400;color: #3FC4FF"
class=
"q-mr-xs"
label=
"编辑"
@
click=
"goDetailed(props.row,'0')"
/>
<q-btn
flat
size=
"xs"
icon=
"delete"
style=
"font-weight:400;color: #3FC4FF"
class=
"q-mr-xs"
label=
"删除"
@
click=
"goDetailed(props.row,'0')"
/>
</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
>
</q-table>
</div>
</div>
</template>
<
script
>
export
default
{
meta
:
{
title
:
"欢迎语列表"
},
name
:
"welcomeList"
,
data
()
{
return
{
loading
:
false
,
ISsystem
:
false
,
data
:
[{
Type
:
1
,
Content
:
'文本:您好,##客户名称##!亲~你終於來啦!!我是你的专属顾问,任何有关日语学习问题都可以问我哦!!~~~~~~~~~~ 加入甲鹤大家庭~优惠天天有 第一条~9.9块日语体验课!! 第二条~每周活动免费参加! 第三条~猛戳我,”赞羊”电商优惠券免费送!! 第四条~再戳我,”旅游优惠券”我再送! ~~~~~从现在起”甲鹤日语”就是你学习日语的好帮手!! 现在回复”甲鹤”两个字~看看甲鹤想给你看甚么?~呵呵呵!'
,
applymember
:
'通用'
,
UpdateTime
:
'2021-08-04 15:48'
}],
pageCount
:
0
,
msg
:
{
pageIndex
:
1
,
pageSize
:
10
,
rowsPerPage
:
10
,
Month
:
''
,
TeacherId
:
0
,
State
:
0
,
},
//公告column
columns
:
[{
name
:
'Type'
,
label
:
'欢迎语类型'
,
align
:
'left'
},
{
name
:
'Content'
,
field
:
'Content'
,
label
:
'欢迎语内容'
,
align
:
'left'
,
},
{
name
:
'applymember'
,
field
:
'applymember'
,
label
:
'使用成员'
,
align
:
'left'
},
{
name
:
'UpdateTime'
,
field
:
'UpdateTime'
,
label
:
'创建时间'
,
align
:
'left'
},
{
name
:
'optioned'
,
label
:
'操作'
,
field
:
'DeptId'
}
],
}
},
created
()
{
},
methods
:
{
changePage
(
e
){
},
goadd
(){
this
.
$router
.
push
({
path
:
'/enterprise/addWelcome'
,
});
}
}
}
</
script
>
<
style
>
.welcomeList
.Sysuser_Date
.el-input--prefix
.el-input__inner
{
background-color
:
red
;
border
:
0
;
}
.welcomeList
.state-item
{
padding
:
2px
5px
;
border-radius
:
3px
;
text-align
:
center
;
font-size
:
10px
;
}
.welcomeList
.frIdlist
{
padding
:
3px
10px
;
border-radius
:
3px
;
background
:
#EEEEEF
;
align-items
:
center
;
justify-content
:
center
;
margin-right
:
5px
;
margin-bottom
:
5px
;
cursor
:
pointer
;
}
.class-popover
.q-pr-lg
{
padding-right
:
0
;
margin-top
:
20px
;
}
.welcomeList
.el-date-editor.el-input
{
width
:
100%
;
}
.welcomeList
.el-date-editor.el-input
input
{
background-color
:
transparent
!important
;
}
.welcomeList
.el-range-editor
.el-range-input
{
background
:
none
;
}
.Sysuser_Date
.el-input__inner
{
background
:
transparent
!important
;
border
:
0
!important
;
}
.welcomeList
.el-drawer.rtl
{
overflow
:
inherit
;
}
</
style
>
\ No newline at end of file
src/pages/sale/contractRefund.vue
0 → 100644
View file @
d581efe6
<
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.QOrderId"
label=
"订单编号"
@
clear=
"resetSearch"
maxlength=
"30"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
standout=
"bg-primary text-white"
v-model=
"msg.AuditStatus"
: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.ProtocolNum"
label=
"合同编号"
@
clear=
"resetSearch"
maxlength=
"30"
/>
</div>
<div
class=
"col-3"
>
<q-input
@
change=
"resetSearch"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.PartyAName"
label=
"学生姓名"
@
clear=
"resetSearch"
maxlength=
"30"
/>
</div>
</div>
</div>
<courserefund-form
:loading=
"loading"
:dataList=
"dataList"
></courserefund-form>
<q-pagination
class=
"full-width justify-end"
v-model=
"msg.pageIndex"
color=
"primary"
:max=
"pageCount"
:input=
"true"
@
input=
"changePage"
/>
</div>
</
template
>
<
script
>
import
{
GetBackClassProtocolPage
}
from
"../../api/sale/contract"
;
import
courserefundForm
from
"../../components/course/courserefund-form"
export
default
{
meta
:
{
title
:
"退课协议管理"
,
},
components
:
{
courserefundForm
},
data
()
{
return
{
loading
:
true
,
msg
:
{
pageIndex
:
1
,
pageSize
:
12
,
PartyAName
:
''
,
AuditStatus
:
-
1
,
QOrderId
:
''
,
ProtocolNum
:
''
,
IsQueryAll
:
0
},
pageCount
:
0
,
dataList
:
[],
//状态下拉
StatusOpts
:
[{
Id
:
-
1
,
Name
:
"不限"
,
},
{
Id
:
1
,
Name
:
"审核中"
,
},
{
Id
:
2
,
Name
:
"审核通过"
,
},
{
Id
:
3
,
Name
:
"驳回"
,
},
],
};
},
created
()
{
},
mounted
()
{
this
.
getList
();
},
methods
:
{
//获取校区列表
getList
()
{
this
.
loading
=
true
;
GetBackClassProtocolPage
(
this
.
msg
).
then
((
res
)
=>
{
this
.
loading
=
false
;
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
.
PageData
;
this
.
pageCount
=
res
.
Data
.
PageCount
;
console
.
log
(
this
.
dataList
,
"this.dataList "
);
}
});
},
//重新查询
resetSearch
()
{
this
.
msg
.
pageIndex
=
1
;
this
.
getList
();
},
//分页改变
changePage
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getList
();
},
},
};
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
src/pages/system/weChatConfig.vue
0 → 100644
View file @
d581efe6
<
style
>
.weChatConfig
.Period-rules
{
display
:
flex
;
margin-bottom
:
24px
;
padding-left
:
20px
;
}
.weChatConfig
.Period_Spreate
{
flex
:
1
;
min-width
:
200px
;
margin-right
:
32px
;
}
.weChatConfig
.Period-rule-title
{
color
:
#646a73
;
margin-bottom
:
4px
;
display
:
flex
;
align-items
:
center
;
}
.weChatConfig
.Period-info-icon
{
margin-left
:
8px
;
color
:
#8f959e
;
line-height
:
1
;
vertical-align
:
top
;
}
.process_Btn_List
{
display
:
flex
;
justify-content
:
flex-end
;
padding
:
20px
;
}
.processBtn_Cancel
{
width
:
90px
;
height
:
35px
;
border
:
1px
solid
#A1AAB2
;
color
:
#000000
;
background-color
:
#fff
;
text-align
:
center
;
line-height
:
35px
;
border-radius
:
5px
;
cursor
:
pointer
;
margin-right
:
20px
;
}
.processBtn_Save
{
width
:
90px
;
height
:
35px
;
background-color
:
#2961FE
;
color
:
#FFF
;
text-align
:
center
;
line-height
:
35px
;
border-radius
:
5px
;
cursor
:
pointer
;
}
.baseSetForm_Dialog
{
margin
:
20px
;
}
.cycle_Title
{
font-size
:
20px
;
font-weight
:
500
;
color
:
#1f2329
;
}
.Period-alert
{
padding
:
9px
16px
;
border-radius
:
4px
;
background-color
:
#f0f4ff
;
line-height
:
22px
;
color
:
#1f2329
;
display
:
flex
;
align-items
:
center
;
margin-top
:
20px
;
margin-bottom
:
12px
;
font-size
:
13px
;
}
.Okr_Length
{
font-weight
:
500
;
color
:
#1f2329
;
}
.FormItem-asterisk
{
position
:
relative
;
top
:
3px
;
margin-left
:
3px
;
color
:
#f54a45
;
line-height
:
1
;
}
.baseSetForm_Dialog
.el-radio
{
display
:
block
;
margin-bottom
:
15px
;
}
</
style
>
<
template
>
<div
class=
"page-body"
>
<div
class=
"weChatConfig"
>
<div
style=
"text-align:right;"
>
<q-btn
color=
"accent"
size=
"sm"
class=
"q-mr-md"
@
click=
"geteject"
label=
"修改基础配置"
/>
</div>
<div
class=
"Period-rules"
>
<div
class=
"Period_Spreate"
>
<div
class=
"Period-rule-title"
>
企业名称
</div>
<div>
{{
baseObj
.
Name
}}
</div>
</div>
<div
class=
"Period_Spreate"
>
<div
class=
"Period-rule-title"
>
企业ID
</div>
<div>
{{
baseObj
.
WX_CorpId
}}
</div>
</div>
</div>
<div
class=
"Period-rules"
>
<div
class=
"Period_Spreate"
>
<div
class=
"Period-rule-title"
>
通讯录管理secret
</div>
<div>
{{
baseObj
.
Employee_Secret
}}
</div>
</div>
<div
class=
"Period_Spreate"
>
<div
class=
"Period-rule-title"
>
外部联系人管理secret
</div>
<div>
{{
baseObj
.
Contact_Secret
}}
</div>
</div>
</div>
<div
class=
"Period-rules"
>
<div
class=
"Period_Spreate"
>
<div
class=
"Period-rule-title"
>
开启状态
</div>
<div>
{{
baseObj
.
Enable
==
1
?
'已开启'
:
'未开启'
}}
</div>
</div>
</div>
</div>
<q-dialog
v-model=
"isShowBaseSet"
maximized
full-height
seamless
position=
"right"
@
hide=
"closeProcess"
>
<q-card
style=
"margin-top:61px;width:500px"
class=
"no-border-radius classinfo_Dialog"
>
<div
class=
"baseSetForm_Dialog"
>
<div
class=
"cycle_Title"
>
微信配置
</div>
<div
style=
"margin-top: 10px;"
>
<q-input
filled
stack-label
:dense=
"false"
v-model=
"addMsg.Name"
ref=
"Name"
class=
"col-12 q-pb-lg"
label=
"企业名称"
:rules=
"[val => !!val || '请填写企业名称']"
/>
</div>
<div>
<q-input
filled
stack-label
:dense=
"false"
v-model=
"addMsg.WX_CorpId"
ref=
"WX_CorpId"
class=
"col-12 q-pb-lg"
label=
"企业微信ID"
:rules=
"[val => !!val || '请填写企业微信ID']"
/>
</div>
<div>
<q-input
filled
stack-label
:dense=
"false"
v-model=
"addMsg.Employee_Secret"
ref=
"Employee_Secret"
class=
"col-12 q-pb-lg"
label=
"企业通讯录secret"
:rules=
"[val => !!val || '请填写企业通讯录secret']"
/>
</div>
<div>
<q-input
filled
stack-label
:dense=
"false"
v-model=
"addMsg.Contact_Secret"
ref=
"Contact_Secret"
class=
"col-12 q-pb-lg"
label=
"企业外部联系人secret"
:rules=
"[val => !!val || '请填写企业外部联系人secret']"
/>
</div>
<div
class=
"Okr_Length"
style=
"margin:20px 0;display: flex;align-items: center;"
>
<div
style=
"color:#1f2329;margin-right: 10px;"
>
开启状态
</div>
<el-switch
v-model=
"addMsg.Enable"
:active-value=
"1"
:inactive-value=
"2"
></el-switch>
</div>
</div>
<div
class=
"process_Btn_List"
>
<div
class=
"processBtn_Cancel"
@
click=
"closeProcess"
>
关闭
</div>
<div
class=
"processBtn_Save"
@
click=
"setBaseInfo"
>
确定
</div>
</div>
</q-card>
<div
class=
"dialog-out-close"
@
click=
"closeProcess"
style=
"height:40px !important;border-top-left-radius: 4px !important;border-bottom-left-radius: 4px !important;"
>
<q-icon
name=
"iconfont icon-jujue1"
size=
"26px"
/>
</div>
</q-dialog>
</div>
</
template
>
<
script
>
import
{
getWeChatConfigInfo
,
setWeChatConfig
}
from
'../../api/system/wechat'
;
export
default
{
meta
:
{
title
:
"企业微信设置"
},
components
:
{
},
data
()
{
return
{
isShowBaseSet
:
false
,
baseObj
:
{},
addMsg
:{},
}
},
mounted
()
{
this
.
getList
();
},
methods
:
{
//获取okr配置信息
getList
()
{
getWeChatConfigInfo
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
baseObj
=
res
.
Data
;
}
})
},
//关闭流程设置
closeProcess
()
{
this
.
isShowBaseSet
=
false
;
},
geteject
(){
this
.
addMsg
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
baseObj
))
this
.
isShowBaseSet
=
true
;
},
setBaseInfo
(){
this
.
$refs
.
Name
.
validate
();
this
.
$refs
.
WX_CorpId
.
validate
();
this
.
$refs
.
Employee_Secret
.
validate
();
this
.
$refs
.
Contact_Secret
.
validate
();
if
(
!
this
.
$refs
.
Name
.
hasError
&&
!
this
.
$refs
.
WX_CorpId
.
hasError
&&
!
this
.
$refs
.
Employee_Secret
.
hasError
&&
!
this
.
$refs
.
Contact_Secret
.
hasError
){
let
msg
=
{
Id
:
this
.
addMsg
.
Id
,
Name
:
this
.
addMsg
.
Name
,
WX_CorpId
:
this
.
addMsg
.
WX_CorpId
,
Employee_Secret
:
this
.
addMsg
.
Employee_Secret
,
Contact_Secret
:
this
.
addMsg
.
Contact_Secret
,
Enable
:
this
.
addMsg
.
Enable
,
}
setWeChatConfig
(
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'数据保存成功!'
,
position
:
'top'
})
this
.
getList
()
this
.
isShowBaseSet
=
false
;
}
})
}
}
}
}
</
script
>
\ No newline at end of file
src/router/routes.js
View file @
d581efe6
...
@@ -113,6 +113,12 @@ const routes = [{
...
@@ -113,6 +113,12 @@ const routes = [{
component
:
()
=>
component
:
()
=>
import
(
"pages/system/okrmanage.vue"
)
import
(
"pages/system/okrmanage.vue"
)
},
},
{
path
:
"/system/weChatConfig"
,
//企业微信设置
component
:
()
=>
import
(
"pages/system/weChatConfig.vue"
)
},
{
{
path
:
"/system/webkitManage"
,
//网站管理
path
:
"/system/webkitManage"
,
//网站管理
component
:
()
=>
component
:
()
=>
...
@@ -739,6 +745,11 @@ const routes = [{
...
@@ -739,6 +745,11 @@ const routes = [{
component
:
()
=>
component
:
()
=>
import
(
"pages/sale/contractManage.vue"
)
import
(
"pages/sale/contractManage.vue"
)
},
},
{
path
:
"/sale/contractRefund"
,
//销售 退课管理
component
:
()
=>
import
(
"pages/sale/contractRefund.vue"
)
},
{
{
path
:
"/sale/contractEdit"
,
//销售 新增-编辑-查看合同
path
:
"/sale/contractEdit"
,
//销售 新增-编辑-查看合同
component
:
()
=>
component
:
()
=>
...
@@ -1118,7 +1129,17 @@ const routes = [{
...
@@ -1118,7 +1129,17 @@ const routes = [{
path
:
"/stuMan/unfinishedStudent"
,
//学管 未完成学员名单
path
:
"/stuMan/unfinishedStudent"
,
//学管 未完成学员名单
component
:
()
=>
component
:
()
=>
import
(
"pages/stuMan/unfinishedStudent"
)
import
(
"pages/stuMan/unfinishedStudent"
)
}
},
{
path
:
"/enterprise/welcomeList"
,
//企微 欢迎语列表
component
:
()
=>
import
(
"pages/enterprise/welcomeList"
)
},
{
path
:
"/enterprise/addWelcome"
,
//企微 欢迎语修改新增
component
:
()
=>
import
(
"pages/enterprise/addWelcome"
)
},
],
],
},
},
...
@@ -1155,6 +1176,11 @@ const routes = [{
...
@@ -1155,6 +1176,11 @@ const routes = [{
component
:
()
=>
component
:
()
=>
import
(
"pages/courseRefund.vue"
)
import
(
"pages/courseRefund.vue"
)
},
},
{
path
:
"/courseRefundH5"
,
component
:
()
=>
import
(
"pages/courseRefundH5.vue"
)
},
{
{
path
:
"/financial/financalDocument/PrintPage"
,
//财务单据打印
path
:
"/financial/financalDocument/PrintPage"
,
//财务单据打印
component
:
()
=>
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