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
aeb569e5
Commit
aeb569e5
authored
Jul 19, 2021
by
黄奎
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/confucius
parents
4105ff8d
c03acaa7
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
1357 additions
and
16 deletions
+1357
-16
App.vue
src/App.vue
+1
-1
student.js
src/api/teacher/student.js
+25
-0
temporaryClass-form.vue
src/components/flow/temporaryClass-form.vue
+355
-0
continueclass-form.vue
src/components/sale/continueclass-form.vue
+1
-1
offertransorder-form.vue
src/components/sale/offertransorder-form.vue
+11
-0
temporaryClassbill-form.vue
src/components/sale/temporaryClassbill-form.vue
+488
-0
transferclass-form.vue
src/components/sale/transferclass-form.vue
+1
-1
provisionalInviteForm.vue
src/components/teacher/provisionalInviteForm.vue
+407
-0
classManage.vue
src/pages/course/classManage.vue
+6
-1
japaneseTrain.vue
src/pages/sale/japaneseTrain.vue
+22
-9
reserveClass.vue
src/pages/sale/reserveClass.vue
+10
-0
processSet.vue
src/pages/system/processSet.vue
+11
-1
changeClassManager.vue
src/pages/teacher/changeClassManager.vue
+0
-1
studentManager.vue
src/pages/teacher/studentManager.vue
+8
-1
billquery.vue
src/pages/user/billquery.vue
+11
-0
No files found.
src/App.vue
View file @
aeb569e5
...
...
@@ -12,7 +12,7 @@ export default {
<
style
>
@import
url('~assets/css/font.css')
;
@import
url('//at.alicdn.com/t/font_2077629_
9bdr67jqie
e.css')
;
@import
url('//at.alicdn.com/t/font_2077629_
tknu7rklx
e.css')
;
.q-scrollarea__thumb
{
z-index
:
999999
!important
;
}
...
...
src/api/teacher/student.js
View file @
aeb569e5
...
...
@@ -23,3 +23,28 @@ export function setStopClassApply(data) {
data
})
}
/**
* 临时上课邀请,获取学员列表
* @param {JSON参数} data
*/
export
function
getNotClassStudentList
(
data
)
{
return
request
({
url
:
'/TeacherClass/GetNotClassStudentList'
,
method
:
'post'
,
data
})
}
/**
* 创建临时上课邀请申请单
* @param {JSON参数} data
*/
export
function
setStuInviteApply
(
data
)
{
return
request
({
url
:
'TempInvitationClass/SetStudentTempInvitation'
,
method
:
'post'
,
data
})
}
\ No newline at end of file
src/components/flow/temporaryClass-form.vue
0 → 100644
View file @
aeb569e5
<
style
>
.changeClassProcess
{
width
:
350px
;
}
.changeClassProcess
.processList
{
width
:
100%
;
height
:
auto
;
}
.changeClassProcess
.processTop
{
width
:
100%
;
height
:
54px
;
background-color
:
#F1F1F1
;
color
:
#000000
;
text-align
:
center
;
line-height
:
54px
;
border-radius
:
2px
;
cursor
:
pointer
;
position
:
relative
;
}
.changeClassProcess
.processLine
{
width
:
100%
;
height
:
54px
;
background-color
:
#fff
;
color
:
#bbb6b6
;
text-align
:
center
;
line-height
:
54px
;
}
.changeClassProcess
.processLine
i
{
font-size
:
25px
;
font-weight
:
bold
;
}
.changeClassProcess
.otherList
{
background-color
:
#2961FE
!important
;
color
:
#fff
;
font-weight
:
bold
;
}
.changeClassProcess
.process_TwoList
{
display
:
flex
;
background-color
:
#2961FE
!important
;
color
:
#fff
;
font-weight
:
bold
;
align-items
:
center
;
justify-content
:
center
;
}
.changeClassProcess
.process_He
{
width
:
36px
;
height
:
36px
;
background-color
:
#3FC4FF
;
text-align
:
center
;
line-height
:
36px
;
color
:
#fff
;
border-radius
:
50%
;
}
.changeClassProcess
.process_Left
{
width
:
40%
;
height
:
100%
;
text-align
:
right
;
}
.changeClassProcess
.process_center
{
width
:
20%
;
height
:
100%
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
}
.changeClassProcess
.process_Right
{
width
:
40%
;
height
:
100%
;
text-align
:
left
;
}
.changeClassProcess
.process_OR
{
background-color
:
#F28C1D
;
}
.changeClassProcess
.addProcessBtn
{
width
:
100%
;
height
:
45px
;
text-align
:
center
;
line-height
:
45px
;
color
:
#2961FE
;
border
:
1px
dashed
#2961FE
;
border-radius
:
2px
;
cursor
:
pointer
;
}
.changeClassProcess
.process_BtnList
{
margin-top
:
30px
;
width
:
100%
;
display
:
flex
;
justify-content
:
center
;
}
.changeClassProcess
.process_BtnOne
{
width
:
90px
;
height
:
38px
;
text-align
:
center
;
line-height
:
38px
;
border-radius
:
2px
;
border
:
1px
solid
#A1AAB2
;
color
:
#000000
;
cursor
:
pointer
;
margin-right
:
50px
;
}
.changeClassProcess
.SetShouSun
{
display
:
inline-block
;
border-radius
:
2px
;
background-color
:
#8175FB
;
color
:
#fff
;
position
:
absolute
;
right
:
10px
;
width
:
60px
;
height
:
27px
;
left
:
0
;
top
:
0
;
line-height
:
27px
;
font-size
:
13px
;
}
.changeClassProcess
.operationDiv
{
position
:
absolute
;
right
:
0
;
top
:
0
;
height
:
30px
;
line-height
:
30px
;
padding-right
:
10px
;
vertical-align
:
top
;
}
.changeClassProcess
.operationDiv
i
:first-child
{
font-size
:
13px
;
}
.changeClassProcess
.operationDiv
i
:hover
{
color
:
red
;
}
.changeClassProcess
.justTwoClass
{
margin-left
:
8px
;
}
</
style
>
<
template
>
<div
class=
"changeClassProcess"
>
<div
class=
"processList"
>
<div
class=
"processTop"
>
发起人
</div>
<div
class=
"processLine"
>
<i
class=
"iconfont icon-down"
></i>
</div>
</div>
<template
v-for=
"(item,index) in flowObj.FlowNodeList"
>
<div
class=
"processList"
@
click=
"getItem(index)"
>
<template
v-if=
"item.FlowAduitList&&item.FlowAduitList.length==1"
>
<div
class=
"processTop otherList"
>
{{
item
.
FlowAduitList
[
0
].
AduitName
}}
<template
v-if=
"item.FlowAduitList&&item.FlowAduitList.length>0 && item.FlowAduitList[0].IsSpecNode==1"
>
<span
class=
"SetShouSun"
>
设定收损
</span>
</
template
>
<div
class=
"operationDiv"
>
<i
class=
"iconfont icon-shanchu"
style=
"position:relative;top:-2px;"
@
click
.
stop=
"DeleteNode(index)"
></i>
<i
style=
"margin:0 8px;"
class=
"iconfont icon-shangyi2"
v-if=
"index!=0"
@
click
.
stop=
"moveDown(index,0)"
></i>
<i
class=
"iconfont icon-xiayi"
:class=
"{'justTwoClass':index==0}"
@
click
.
stop=
"moveDown(index,1)"
v-if=
"index!=flowObj.FlowNodeList.length-1"
></i>
</div>
</div>
<div
class=
"processLine"
v-if=
"index!=flowObj.FlowNodeList.length-1"
>
<i
class=
"iconfont icon-down"
></i>
</div>
</template>
<
template
v-else
>
<div
class=
"processTop process_TwoList"
>
<div
class=
"process_Left"
>
{{
item
.
FlowAduitList
[
0
].
AduitName
}}
</div>
<div
class=
"process_center"
>
<template
v-if=
"item.FlowAduitList[0].AuditWay==2"
>
<div
class=
"process_He"
>
和
</div>
</
template
>
<
template
v-if=
"item.FlowAduitList[0].AuditWay==3"
>
<div
class=
"process_He process_OR"
>
或者
</div>
</
template
>
</div>
<div
class=
"process_Right"
>
<
template
v-for=
"(subItem,subIndex) in item.FlowAduitList"
v-if=
"subIndex>0"
>
{{
subItem
.
AduitName
}}
</
template
>
</div>
<
template
v-if=
"item.FlowAduitList&&item.FlowAduitList.length>0 && item.FlowAduitList[0].IsSpecNode==1"
>
<span
class=
"SetShouSun"
>
设定收损
</span>
</
template
>
<div
class=
"operationDiv"
>
<i
class=
"iconfont icon-shanchu"
style=
"position:relative;top:-2px;"
@
click
.
stop=
"DeleteNode(index)"
></i>
<i
style=
"margin:0 8px;"
class=
"iconfont icon-shangyi2"
v-if=
"index!=0"
@
click
.
stop=
"moveDown(index,0)"
></i>
<i
class=
"iconfont icon-xiayi"
:class=
"{'justTwoClass':index==0}"
@
click
.
stop=
"moveDown(index,1)"
v-if=
"index!=flowObj.FlowNodeList.length-1"
></i>
</div>
</div>
<div
class=
"processLine"
v-if=
"index!=flowObj.FlowNodeList.length-1"
>
<i
class=
"iconfont icon-down"
></i>
</div>
</template>
</div>
</template>
<br
/>
<div
class=
"addProcessBtn"
@
click=
"AddNode"
>
新增节点
</div>
<div
class=
"process_BtnList"
>
<q-btn
label=
"保存"
color=
"accent q-px-md"
style=
"font-weight:400 !important"
@
click=
"setBackClassFlow"
/>
</div>
<process-form
v-if=
"isShowProcess"
:save-obj=
"processObj"
:NodeIndex=
"ChooseNodeIndex"
@
close=
"closeProcessForm"
@
success=
"refreshPage"
:authObj=
"showObj"
>
</process-form>
</div>
</template>
<
script
>
import
processForm
from
'../../components/flow/process-form'
;
import
{
queryBackClassFlow
,
saveBackClassFlow
}
from
'../../api/system/index'
export
default
{
meta
:
{
title
:
""
},
components
:
{
processForm
},
data
()
{
return
{
msg
:
{
FlowId
:
4
},
isShowProcess
:
false
,
//显示旁边弹窗
processObj
:
{},
//传递子组件
flowObj
:
{
FlowId
:
4
,
FlowName
:
"临时上课邀请流程"
,
FlowNodeList
:
[],
//审核节点列表
},
//显示对象
showObj
:
{
isShowShouSun
:
0
,
//不显示收损
},
ChooseNodeIndex
:
0
,
}
},
created
()
{},
mounted
()
{
this
.
getBackClassFlow
();
},
methods
:
{
//新增节点
AddNode
()
{
this
.
flowObj
.
FlowNodeList
.
push
({
FlowId
:
0
,
NodeId
:
0
,
NodeName
:
"新增节点"
,
SortNum
:
0
,
FlowAduitList
:
[{
AduitName
:
"新增节点"
,
AuditType
:
2
,
AuditWay
:
2
,
CheckId
:
0
,
FlowId
:
0
,
IsSpecNode
:
0
,
NodeId
:
8
,
PostType
:
0
,
UserId
:
0
,
}]
});
},
//删除节点
DeleteNode
(
index
)
{
this
.
$q
.
dialog
({
title
:
'提示信息'
,
message
:
'是否确定删除该流程'
,
cancel
:
true
,
persistent
:
true
,
ok
:
"确定"
,
cancel
:
"取消"
,
}).
onOk
(()
=>
{
this
.
flowObj
.
FlowNodeList
.
splice
(
index
,
1
);
}).
onCancel
(()
=>
{
});
},
getBackClassFlow
()
{
queryBackClassFlow
(
this
.
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
&&
res
.
Data
)
{
this
.
flowObj
=
res
.
Data
;
}
})
},
//点开旁边
getItem
(
nodeIndex
)
{
this
.
processObj
=
this
.
flowObj
;
this
.
ChooseNodeIndex
=
nodeIndex
;
this
.
isShowProcess
=
true
;
},
//关闭
closeProcessForm
()
{
this
.
isShowProcess
=
false
},
//成功刷新
refreshPage
()
{
this
.
isShowProcess
=
false
;
this
.
getBackClassFlow
();
},
//保存退课流程
setBackClassFlow
()
{
saveBackClassFlow
(
this
.
flowObj
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'操作成功'
,
position
:
'top'
})
this
.
refreshPage
();
}
})
},
//下移下移
moveDown
(
index
,
IsUp
)
{
var
currentItem
=
this
.
flowObj
.
FlowNodeList
[
index
];
if
(
IsUp
==
0
)
{
if
(
index
>
0
)
{
var
upItem
=
this
.
flowObj
.
FlowNodeList
[
index
-
1
];
this
.
$set
(
this
.
flowObj
.
FlowNodeList
,
index
-
1
,
currentItem
);
this
.
$set
(
this
.
flowObj
.
FlowNodeList
,
index
,
upItem
);
}
}
else
{
if
(
index
!=
this
.
flowObj
.
FlowNodeList
.
length
-
1
)
{
var
downItem
=
this
.
flowObj
.
FlowNodeList
[
index
+
1
];
this
.
$set
(
this
.
flowObj
.
FlowNodeList
,
index
+
1
,
currentItem
);
this
.
$set
(
this
.
flowObj
.
FlowNodeList
,
index
,
downItem
);
}
}
}
}
}
</
script
>
src/components/sale/continueclass-form.vue
View file @
aeb569e5
...
...
@@ -166,7 +166,7 @@
<
template
v-else
>
<div
class=
"contiue_Top"
>
<span
class=
"backContius"
@
click=
"isShowTuike=true"
>
<
返回
</span>
<span
style=
"margin-left:20px;"
>
班级选择
<
i
style=
"font-size:18px;margin-left:15px;"
title=
"返回"
class=
"iconfont icon-fanhui"
></i>
</span>
<span
style=
"margin-left:20px;"
>
班级选择
</span>
</div>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
style=
"margin:10px;"
>
...
...
src/components/sale/offertransorder-form.vue
View file @
aeb569e5
...
...
@@ -276,6 +276,7 @@
let
val
=
item
.
ClassList
.
find
(
x
=>
x
.
ClassId
==
item
.
ClassId
);
if
(
val
)
{
item
.
ClassName
=
val
.
ClassName
;
item
.
Teacher_Id
=
val
.
Teacher_Id
;
}
}
else
{
item
.
ClassName
=
""
...
...
@@ -337,6 +338,16 @@
OfferType
:
this
.
obj
.
OfferType
,
OfferDetails
:
this
.
model
.
OfferDetails
};
for
(
var
i
=
0
;
i
<
sMsg
.
OfferDetails
.
length
;
i
++
){
if
(
sMsg
.
OfferDetails
[
i
].
Teacher_Id
==
0
){
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`请联系班级管理员,关联
${
sMsg
.
OfferDetails
[
i
].
ClassName
}
班级老师后转单`
})
return
}
}
saveOfferToOrder
(
sMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
...
...
src/components/sale/temporaryClassbill-form.vue
0 → 100644
View file @
aeb569e5
<!--临时上课邀请表单审核信息-->
<
style
>
.backbill-Dialog
.drawerTop
{
width
:
100%
;
height
:
50px
;
display
:
flex
;
justify-content
:
space-between
;
background-color
:
#F0F5FB
;
padding
:
5px
10px
;
align-items
:
center
;
}
.backbill-Dialog
.classFirst
{
color
:
#000000
;
font-weight
:
bold
;
}
.backbill-Dialog
.className
{
margin-left
:
10px
;
}
.backbill-Dialog
.classStatus
{
padding
:
3px
8px
;
background-color
:
#c8d7fc
;
color
:
#2961FE
;
font-size
:
12px
;
border-radius
:
2px
;
margin-left
:
20px
;
}
.backbill-Dialog
.normalName
{
color
:
#999999
;
}
.backbill-Dialog
.normalInner
{
color
:
#111111
;
}
.drop_NameDown
{
margin-top
:
20px
;
width
:
300px
;
}
.backinfoContent
{
margin
:
10px
;
padding-bottom
:
80px
;
}
.backinfoContent
.role_Line
{
width
:
3px
;
height
:
11px
;
margin-right
:
10px
;
background-color
:
#3FC4FF
;
display
:
inline-block
;
}
.backinfoContent
.backinfo_Item
{
color
:
#000000
;
font-weight
:
bold
;
}
.backinfoContent
.backInfo_One
{
margin
:
20px
0
;
}
.backinfoContent
.backOtherInfo
{
color
:
#111111
;
}
.backinfoContent
.backInfo_Title
{
display
:
inline-block
;
width
:
75px
;
text-align
:
left
;
color
:
#999999
;
}
.backinfoContent
.replayReason
{
width
:
100%
;
min-height
:
100px
;
background-color
:
#F0F5FB
;
border-radius
:
3px
;
padding
:
20px
;
margin
:
20px
0
;
}
.backinfoContent
.replay_Title
{
font-weight
:
bold
;
color
:
#111111
;
}
.backinfoContent
.chaosong_Peo
{
display
:
inline-block
;
padding
:
2px
3px
;
color
:
#fff
;
border-radius
:
3px
;
margin
:
0
5px
5px
0
;
background-color
:
#9cf
;
}
.backinfoContent
.topBaseInfo
{
/* height: 300px; */
overflow
:
auto
;
}
.topBaseInfo
::-webkit-scrollbar
{
width
:
3px
;
height
:
3px
;
background-color
:
#F5F5F5
;
}
/*!*定义滚动条轨道 内阴影+圆角*!*/
.topBaseInfo
::-webkit-scrollbar-track
{
-webkit-box-shadow
:
inset
0
0
6px
rgba
(
0
,
0
,
0
,
0.3
);
border-radius
:
10px
;
background-color
:
#F5F5F5
;
}
/*!*定义滑块 内阴影+圆角*!*/
.topBaseInfo
::-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
;
}
</
style
>
<
template
>
<q-dialog
v-model=
"persistent"
maximized
full-height
seamless
position=
"right"
@
hide=
"closeShenheForm"
>
<q-card
style=
"margin-top:61px;width:850px"
class=
"no-border-radius backbill-Dialog"
>
<div
class=
"drawerTop"
>
<div
style=
"display:flex;align-items:center;"
>
<div
class=
"className"
>
<div
class=
"classFirst"
>
停课审批
</div>
</div>
</div>
</div>
<q-tabs
style=
"margin:15px;"
v-model=
"tabCheck"
narrow-indicator
dense
align=
"left"
class=
"text-primary"
>
<q-tab
:ripple=
"false"
name=
"first"
label=
"详细信息"
/>
<q-tab
:ripple=
"false"
name=
"second"
label=
"审批记录"
/>
</q-tabs>
<div
v-if=
"tabCheck=='first'"
style=
"margin:0 15px;"
>
<div
class=
"backinfoContent"
>
<div>
<div
class=
"topBaseInfo"
>
<div
class=
"backinfo_Item"
>
<span
class=
"role_Line"
></span>
基本信息
</div>
<div
class=
"row backInfo_One"
>
<div
class=
"col-6"
>
<span
class=
"backInfo_Title"
>
停课编号:
</span>
<span
class=
"backOtherInfo"
>
{{
setingObj
.
Id
}}
</span>
</div>
<div
class=
"col-6"
>
<span
class=
"backInfo_Title"
>
申请人:
</span>
<span
class=
"backOtherInfo"
>
{{
setingObj
.
CreateByName
}}
</span>
</div>
</div>
<div
class=
"row backInfo_One"
>
<div
class=
"col-6"
>
<span
class=
"backInfo_Title"
>
学员姓名:
</span>
<span
class=
"backOtherInfo"
>
{{
setingObj
.
DataObj
.
Order_Guest_ViewModel
.
GuestName
}}
</span>
</div>
<div
class=
"col-6"
>
<span
class=
"backInfo_Title"
>
申请时间:
</span>
<span
class=
"backOtherInfo"
>
{{
setingObj
.
CreateTime
}}
</span>
</div>
</div>
<div
class=
"backinfo_Item"
>
<span
class=
"role_Line"
style=
"background-color:#F28C1D"
></span>
教学信息
</div>
<div
class=
"row backInfo_One"
>
<div
class=
"col-6"
>
<span
class=
"backInfo_Title"
>
校区:
</span>
<span
class=
"backOtherInfo"
>
{{
setingObj
.
DataObj
.
Order_Guest_ViewModel
.
SchoolName
}}
</span>
</div>
<div
class=
"col-6"
>
<span
class=
"backInfo_Title"
>
班级信息:
</span>
<span
class=
"backOtherInfo"
>
{{
setingObj
.
DataObj
.
ClassName
}}
<span
style=
"color:#2961FE;cursor:pointer;"
@
click=
"goClassManage(setingObj.DataObj.ClassName)"
>
{{
setingObj
.
ClassNo
}}
</span>
</span>
</div>
</div>
<div
class=
"row backInfo_One"
>
<div
class=
"col-6"
>
<span
class=
"backInfo_Title"
>
带班老师:
</span>
<span
class=
"backOtherInfo"
>
{{
setingObj
.
DataObj
.
Order_Guest_ViewModel
.
TeacherName
}}
</span>
</div>
<div
class=
"col-6"
>
<span
class=
"backInfo_Title"
>
学习课程:
</span>
<span
class=
"backOtherInfo"
style=
"color:#2961FE;cursor:pointer;"
@
click=
"goCourse(setingObj.DataObj.Order_Guest_ViewModel.CourseName)"
>
{{
setingObj
.
DataObj
.
Order_Guest_ViewModel
.
CourseName
}}
</span>
</div>
</div>
<div
class=
"backinfo_Item"
>
<span
class=
"role_Line"
style=
"background-color:#02C499"
></span>
学习信息
</div>
<div
class=
"row backInfo_One"
>
<div
class=
"col-6"
>
<span
class=
"backInfo_Title"
>
总课时:
</span>
<span
class=
"backOtherInfo"
>
{{
setingObj
.
DataObj
.
Order_Guest_ViewModel
.
TotalPlanNum
}}
课时
</span>
</div>
<div
class=
"col-6"
>
<span
class=
"backInfo_Title"
>
已学课时:
</span>
<!--
<span
class=
"backOtherInfo"
style=
"color:#2961FE;cursor:pointer;"
@
click=
"goStudentsClassSee(setingObj.DataObj.Order_Guest_ViewModel)"
>
{{
setingObj
.
DataObj
.
Order_Guest_ViewModel
.
Ranks
}}
课时
</span>
-->
<span
class=
"backOtherInfo"
>
{{
setingObj
.
DataObj
.
Order_Guest_ViewModel
.
Ranks
}}
课时
</span>
</div>
</div>
<div
class=
"row backInfo_One"
>
<div
class=
"col-6"
>
<span
class=
"backInfo_Title"
>
剩余课时:
</span>
<span
class=
"backOtherInfo"
>
{{
setingObj
.
DataObj
.
Order_Guest_ViewModel
.
TotalPlanNum
-
setingObj
.
DataObj
.
Order_Guest_ViewModel
.
Ranks
}}
课时
</span>
</div>
</div>
<div
class=
"backinfo_Item"
>
<span
class=
"role_Line"
style=
"background-color:#8175FB"
></span>
其他信息
</div>
<div
class=
"row backInfo_One"
>
<div
class=
"col-6"
>
<span
class=
"backInfo_Title"
>
关联单号:
</span>
<span
class=
"backOtherInfo"
style=
"color:#2961FE;cursor:pointer"
@
click=
"goOrderStatic(setingObj.DataObj.Order_Guest_ViewModel.OrderId)"
>
{{
setingObj
.
DataObj
.
Order_Guest_ViewModel
.
OrderId
}}
</span>
</div>
<div
class=
"col-6"
>
<span
class=
"backInfo_Title"
>
关联销售:
</span>
<span
class=
"backOtherInfo"
>
{{
setingObj
.
DataObj
.
Order_Guest_ViewModel
.
EnterName
}}
</span>
</div>
</div>
</div>
<div
class=
"replayReason"
>
<div
class=
"replay_Title"
>
生效日期
</div>
<div
style=
"color:#666666;margin-top:5px;"
class=
"q-mb-md"
>
{{
handleDate
(
setingObj
.
DataObj
.
TakeEffectTime
)
}}
</div>
<div
class=
"replay_Title"
>
停课原因
</div>
<div
style=
"color:#666666;margin-top:5px;"
>
{{
setingObj
.
DataObj
.
Remarks
}}
</div>
</div>
<!--
<template
v-if=
"setingObj.SpecialNode==1"
>
<span>
<q-input
filled
stack-label
:dense=
"false"
v-model=
"stopBillMsg.BackMoney"
class=
"col-12"
label=
"退课金额"
/>
</span>
<span>
系统计算课时费为:
{{
(
classPriceObj
.
ClassHours
-
classPriceObj
.
FinishHours
)
}}
(课时)*
{{
classPriceObj
.
classHourPrice
}}
(课单价)=
{{
classPriceObj
.
backMoney
}}
元,请你最终确认退款金额
</span>
</
template
>
-->
<div
v-if=
"showType==2"
>
<div
style=
"display:flex;justify-content:space-between;align-items:center;margin-top:20px;"
>
<div>
审批意见
</div>
<div>
<q-radio
v-model=
"stopBillMsg.AuditStatus"
:val=
"2"
label=
"通过"
/>
<q-radio
v-model=
"stopBillMsg.AuditStatus"
:val=
"3"
label=
"驳回"
/>
</div>
</div>
<q-input
filled
stack-label
:dense=
"false"
v-model=
"stopBillMsg.Description"
type=
"textarea"
label=
"审批意见"
/>
</div>
<div
style=
"margin-top:20px;"
>
<div
class=
"row"
>
<div
class=
"col-6"
style=
"display:flex;align-items:top;"
>
<
template
v-if=
"tempPeople.length>0"
>
<div
style=
"display:inline-block;width:45px;"
>
抄送:
</div>
<!-- RecipientIds -->
<div
style=
"display:inline-block;margin-left:5px;width:340px;"
>
<span
class=
"chaosong_Peo"
v-for=
"(childItem,cindex) in tempPeople"
>
{{
getName
(
childItem
)
}}
</span>
</div>
</
template
>
</div>
<div
class=
"col-6"
style=
"justify-content: flex-end;display:flex;align-items:center;"
>
<i
class=
"iconfont icon-aite"
style=
"font-size:20px;margin:7px 20px 0 0;cursor:pointer;"
v-if=
"showType==2"
>
<q-popup-proxy>
<q-banner>
<div
style=
"width:350px;"
>
<div
style=
"margin:10px 0 15px 0;"
>
抄送
</div>
<q-select
class=
"col-6 q-pb-lg q-pr-lg"
multiple
clearable
filled
stack-label
use-input
option-value=
"Id"
option-label=
"EmployeeName"
v-model=
"tempPeople"
ref=
"ManagerId"
:options=
"EmployeeList"
label=
"选择人员"
:dense=
"false"
emit-value
map-options
@
filter=
"filterFn"
>
<
template
v-slot:no-option
>
<q-item>
<q-item-section
class=
"text-grey"
>
未找到相关数据
</q-item-section>
</q-item>
</
template
>
</q-select>
</div>
</q-banner>
</q-popup-proxy>
</i>
<q-btn
class=
"q-mr-md"
label=
"关闭"
@
click=
"closeBackInfo"
/>
<q-btn
v-if=
"showType==2"
color=
"accent q-px-md"
label=
"确认"
@
click=
"saveBackClassInfo()"
/>
</div>
</div>
</div>
</div>
</div>
</div>
<div
v-if=
"tabCheck=='second'"
>
<flowinfoForm
:seting-obj=
"setingObj"
:showType=
"showType"
@
close=
"closeShenheForm"
@
success=
"refreshPage"
>
</flowinfoForm>
</div>
</q-card>
<div
class=
"dialog-out-close"
@
click=
"closeShenheForm"
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>
</template>
<
script
>
import
flowinfoForm
from
'../sale/flowinfo-form'
;
import
{
saveBackBillAduit
,
queryBackBillMoney
}
from
'../../api/sale/bill'
import
{
queryEmployee
}
from
'../../api/users/user'
export
default
{
props
:
{
setingObj
:
{
type
:
Object
,
default
:
null
},
showType
:
{
type
:
Number
,
default
:
1
},
},
components
:
{
flowinfoForm
,
},
data
()
{
return
{
persistent
:
true
,
tabCheck
:
'first'
,
//默认选第一个
stopBillMsg
:
{
Id
:
0
,
// BackMoney: 0, //实际退款金额
Description
:
""
,
//审批意见
AuditStatus
:
2
,
//审核状态
SpecialNode
:
0
,
//是否特殊节点
RecipientIds
:
""
,
//抄送人
},
classPriceObj
:
{},
//课程价格信息
EmployeeList
:
[],
AllemployeeList
:
[],
tempPeople
:
[],
//抄送人数组
}
},
created
()
{
this
.
getEmployee
();
},
mounted
()
{
this
.
stopBillMsg
.
Id
=
this
.
setingObj
.
Id
;
this
.
stopBillMsg
.
SpecialNode
=
this
.
setingObj
.
SpecialNode
;
if
(
this
.
stopBillMsg
.
SpecialNode
==
1
)
{
this
.
getBackBillMoney
();
}
},
methods
:
{
getBackBillMoney
()
{
queryBackBillMoney
({
BackId
:
this
.
setingObj
.
RelationId
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
classPriceObj
=
res
.
Data
;
}
});
},
closeBackInfo
()
{
this
.
persistent
=
false
;
this
.
$emit
(
'close'
);
},
//停课单据审核
saveBackClassInfo
()
{
var
str
=
""
;
if
(
this
.
tempPeople
&&
this
.
tempPeople
.
length
>
0
)
{
this
.
tempPeople
.
forEach
(
item
=>
{
str
+=
","
+
item
;
})
}
if
(
str
&&
str
!=
''
)
{
str
=
str
.
substr
(
1
);
}
this
.
stopBillMsg
.
RecipientIds
=
str
;
saveBackBillAduit
(
this
.
stopBillMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'审核成功!'
,
position
:
'top'
})
//调用父页面成功方法
this
.
$emit
(
'success'
);
this
.
$emit
(
'close'
);
}
})
},
//获取员工列表
getEmployee
()
{
var
qMsg
=
{
EmployeeName
:
""
}
queryEmployee
(
qMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
var
jsonData
=
res
.
Data
;
if
(
jsonData
&&
jsonData
.
length
>
0
)
{
this
.
AllemployeeList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));
this
.
EmployeeList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));;
}
}
})
},
//筛选员工
filterFn
(
val
,
update
)
{
update
(()
=>
{
if
(
val
===
''
)
{
this
.
EmployeeList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
AllemployeeList
))
}
else
{
const
needle
=
val
.
toLowerCase
()
this
.
EmployeeList
=
this
.
AllemployeeList
.
filter
(
v
=>
v
.
EmployeeName
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
)
}
})
},
//获取员工姓名
getName
(
id
)
{
let
str
=
''
this
.
EmployeeList
.
forEach
(
x
=>
{
if
(
id
==
x
.
Id
)
{
str
=
x
.
EmployeeName
;
}
})
return
str
;
},
//跳转到班级管理
goClassManage
(
ClassName
)
{
this
.
OpenNewUrl
(
'/course/classManage'
,
{
'ClassName'
:
ClassName
})
},
//跳转到报名统计
goOrderStatic
(
OrderId
)
{
this
.
OpenNewUrl
(
'/sale/orderStatistics'
,
{
'OrderId'
:
OrderId
})
},
//跳转到课耗明细
goStudentsClassSee
(
item
){
this
.
OpenNewUrl
(
'/teacher/studentsClassSee'
,
{
StudentId
:
item
.
Id
,
TeacherId
:
item
.
Teacher_Id
,
ClassId
:
item
.
ClassId
,
})
},
//跳转到课程管理
goCourse
(
name
){
this
.
OpenNewUrl
(
'/course/course'
,
{
Name
:
name
})
},
refreshPage
()
{
this
.
persistent
=
false
;
this
.
$emit
(
'success'
);
},
closeShenheForm
()
{
this
.
persistent
=
false
;
this
.
$emit
(
'close'
);
},
handleDate
(
T
){
let
date
=
T
.
split
(
"T"
)
return
date
[
0
]
}
}
}
</
script
>
src/components/sale/transferclass-form.vue
View file @
aeb569e5
...
...
@@ -195,7 +195,7 @@
<
template
v-else
>
<div
class=
"contiue_Top"
>
<span
class=
"backContius"
@
click=
"isShowTuike=true"
>
<
返回
</span>
<span
style=
"margin-left:20px;"
>
班级选择
<
i
style=
"font-size:18px;margin-left:15px;"
title=
"返回"
class=
"iconfont icon-fanhui"
></i>
</span>
<span
style=
"margin-left:20px;"
>
班级选择
</span>
</div>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
style=
"margin:10px;"
>
...
...
src/components/teacher/provisionalInviteForm.vue
0 → 100644
View file @
aeb569e5
<
style
>
.common_Style
{
display
:
inline-block
;
width
:
30px
;
height
:
30px
;
border-radius
:
50%
;
text-align
:
center
;
line-height
:
30px
;
}
.classForm_monday
{
background-color
:
#ced9f8
;
color
:
#2961FE
;
}
.classForm_tuesday
{
background-color
:
#d9f3ff
;
color
:
#3FC4FF
;
}
.classForm_wednesday
{
background-color
:
#f6e2cb
;
color
:
#F28C1D
;
}
.classForm_thursday
{
background-color
:
#ccf3eb
;
color
:
#02C499
;
}
.classForm_friday
{
background-color
:
#f7cfd6
;
color
:
#F72E52
;
}
.classForm_saturday
{
background-color
:
#fff5cc
;
color
:
#FFCC00
;
}
.classForm_sunday
{
background-color
:
#e6e3fe
;
color
:
#8175FB
;
}
.planTimeLi
tbody
::before
{
content
:
''
;
display
:
table-row
;
height
:
20px
;
}
</
style
>
<
template
>
<q-dialog
v-model=
"persistent"
content-class=
"bg-grey-1"
persistent
transition-show=
"scale"
transition-hide=
"scale"
>
<q-card
style=
"width: 1000px;max-width:1000px;"
>
<q-card-section>
<div
class=
"text-h6"
>
创建临时上课邀请申请单
</div>
</q-card-section>
<q-card-section
class=
"q-pt-none"
style=
"height: 80vh"
>
<q-scroll-area
:thumb-style=
"thumbStyle"
:content-style=
"contentStyle"
:content-active-style=
"contentActiveStyle"
class=
"full-width full-height"
>
<div
class=
"row q-col-gutter-lg"
>
<q-select
filled
stack-label
option-value=
"ClassId"
option-label=
"ClassName"
v-model=
"msg.ClassId"
:options=
"classList"
@
input=
"changeClass"
emit-value
map-options
label=
"班级"
class=
"col-6"
use-input
clearable
@
filter=
"filterFn"
>
<template
v-slot:option=
"
{ itemProps, itemEvents, opt, selected, toggleOption }">
<q-item
v-bind=
"itemProps"
v-on=
"itemEvents"
>
<q-item-section>
<q-item-label
v-html=
"opt.ClassName"
></q-item-label>
</q-item-section>
<q-item-section
side
>
<q-item-label
v-html=
"opt.OpenTime"
></q-item-label>
</q-item-section>
</q-item>
</
template
>
</q-select>
<q-input
filled
v-model=
"msg.GuestName"
clearable
class=
"col-6"
label=
"学员姓名"
maxlength=
"200"
>
<
template
v-slot:append
>
<q-icon
name=
"search"
@
click=
"getNotClassStudentList"
@
keyup
.
enter=
"getNotClassStudentList"
/>
</
template
>
</q-input>
</div>
<div
class=
"row items-center q-ma-sm"
>
</div>
<!-- <div class="text-caption q-mb-lg q-px-md text-grey-6">上课时间</div> -->
<q-expansion-item
expand-separator
label=
"上课时间"
:value=
"true"
>
<div
class=
"col"
>
<q-table
no-data-label=
"暂无相关数据"
flat
:pagination=
"pages"
class=
"sticky-column-table sticky-header-column-table"
separator=
"none"
:data=
"currentClass"
:columns=
"columns"
row-key=
"index"
selection=
"multiple"
:selected
.
sync=
"selected"
>
<
template
v-slot:body-cell-TimeList=
"props"
>
<q-td
auto-width
:props=
"props"
>
{{
props
.
row
.
StartTime
}}
-
{{
props
.
row
.
EndTime
}}
</q-td>
</
template
>
<
template
v-slot:bottom
></
template
>
</q-table>
</div>
</q-expansion-item>
<!-- <div class="text-caption q-mb-lg q-px-md text-grey-6">学员列表</div> -->
<q-expansion-item
expand-separator
label=
"学员列表"
:value=
"true"
>
<div
class=
"row items-center"
>
<div
class=
"col"
>
<q-table
no-data-label=
"暂无相关数据"
flat
:pagination=
"pages"
class=
"sticky-column-table sticky-header-column-table "
:data=
"stuList"
:columns=
"stuColumns"
row-key=
"Id"
selection=
"multiple"
:selected
.
sync=
"selectedStu"
>
<
template
v-slot:bottom
></
template
>
</q-table>
</div>
</div>
</q-expansion-item>
<q-input
filled
type=
"textarea"
:rows=
"3"
style=
"margin-top:20px;"
stack-label
maxlength=
"2000"
v-model=
"msg.Remarks"
:dense=
"false"
class=
"col-12 q-pb-lg"
label=
"备注"
/>
</q-scroll-area>
</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=
"save"
/>
</q-card-actions>
</q-card>
</q-dialog>
</template>
<
script
>
import
{
getClassDropDownList
,
}
from
"../../api/school/index"
;
import
{
getNotClassStudentList
,
setStuInviteApply
}
from
'../../api/teacher/student'
import
Lockr
from
'lockr'
export
default
{
data
()
{
return
{
pages
:
{
rowsPerPage
:
0
},
persistent
:
true
,
saveLoading
:
false
,
contentStyle
:
{},
contentActiveStyle
:
{},
thumbStyle
:
{
right
:
'2px'
,
borderRadius
:
'5px'
,
backgroundColor
:
'#027be3'
,
width
:
'5px'
,
opacity
:
0.75
},
msg
:
{
ClassId
:
0
,
GuestName
:
""
,
Remarks
:
''
//备注
},
selected
:
[],
classList
:
[],
classListAll
:
[],
queryClass
:
{
CourseId
:
0
,
IsAddDefault
:
1
,
SchoolId
:
-
1
,
Teacher_Id
:
0
,
MoreStatus
:
"1,2"
,
IsQuerySurplusPlan
:
1
},
currentClass
:
[],
columns
:
[{
name
:
'RoomName'
,
label
:
'教室名称'
,
field
:
'RoomName'
,
align
:
'left'
,
},
{
name
:
'ClassDate'
,
label
:
'上课日期'
,
field
:
'ClassDate'
,
align
:
'left'
},
{
name
:
'TeacherName'
,
label
:
'老师'
,
field
:
'TeacherName'
,
align
:
'left'
},
{
name
:
'TimeList'
,
label
:
'上课时间'
,
field
:
'TimeList'
,
align
:
'left'
},
],
classSetMsg
:
{
OpenTime
:
''
,
//开班时间
ClassStyle
:
1
,
//排课方式(1-周,2-月,3-固定日期,4-约课)
ClassHours
:
''
,
ClassHourMinute
:
''
,
},
stuList
:
[],
selectedStu
:
[],
stuColumns
:
[{
name
:
'GuestName'
,
label
:
'姓名'
,
field
:
'GuestName'
,
align
:
'left'
},
{
name
:
'Mobile'
,
label
:
'电话'
,
field
:
'Mobile'
,
align
:
'left'
},
{
name
:
'ClassName'
,
label
:
'班级'
,
field
:
'ClassName'
,
align
:
'left'
},
{
name
:
'CourseName'
,
label
:
'课程'
,
field
:
'CourseName'
,
align
:
'left'
},
]
}
},
// watch: {
// selected: {
// handler(val) {
// console.log(302, val)
// },
// deep: true
// },
// selectedStu: {
// handler(val) {
// console.log(353, val)
// },
// deep: true
// }
// },
mounted
()
{
let
u
=
Lockr
.
get
(
"loginUserInfo"
)
if
(
u
)
{
this
.
queryClass
.
Teacher_Id
=
u
.
AccountId
}
this
.
getClass
()
},
methods
:
{
closeSaveForm
()
{
this
.
$emit
(
'close'
)
this
.
persistent
=
false
},
changeClass
(
val
)
{
if
(
!
val
)
{
return
}
this
.
currentClass
=
[]
let
list
=
this
.
classList
.
find
(
x
=>
{
return
x
.
ClassId
==
val
}).
PlanList
list
.
map
(
item
=>
{
item
.
TimeList
.
map
(
_item
=>
{
let
obj
=
JSON
.
parse
(
JSON
.
stringify
(
item
))
delete
obj
.
TimeList
obj
=
{
...
obj
,
...
_item
}
this
.
currentClass
.
push
(
obj
)
})
})
this
.
currentClass
.
forEach
((
e
,
i
)
=>
{
e
.
index
=
i
+
1
})
this
.
getNotClassStudentList
()
},
getClass
()
{
getClassDropDownList
(
this
.
queryClass
).
then
(
res
=>
{
this
.
classList
=
[];
this
.
msg
.
ClassId
=
0
if
(
res
.
Code
==
1
)
{
res
.
Data
.
forEach
(
x
=>
{
x
.
PlanList
.
forEach
(
y
=>
{
let
newPlan
=
JSON
.
parse
(
JSON
.
stringify
(
y
))
y
.
NewPlan
=
newPlan
})
})
this
.
classList
=
res
.
Data
;
this
.
classListAll
=
res
.
Data
;
var
obj
=
{
ClassName
:
'请选择'
,
ClassId
:
0
}
this
.
classList
.
unshift
(
obj
);
}
});
},
//筛选班级
filterFn
(
val
,
update
)
{
update
(()
=>
{
if
(
val
===
''
)
{
this
.
classList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
classListAll
))
}
else
{
const
needle
=
val
.
toLowerCase
();
this
.
classList
=
this
.
classListAll
.
filter
(
v
=>
v
.
ClassName
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
);
}
})
},
//获取除本班学生的列表
getNotClassStudentList
()
{
if
(
this
.
msg
.
ClassId
<
0
||
!
this
.
msg
.
ClassId
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
'top'
,
message
:
"请选择班级"
})
return
}
if
(
!
this
.
msg
.
GuestName
)
{
this
.
msg
.
GuestName
=
""
}
let
obj
=
{
ClassId
:
this
.
msg
.
ClassId
,
GuestName
:
this
.
msg
.
GuestName
}
getNotClassStudentList
(
obj
).
then
(
res
=>
{
if
(
res
.
Code
===
1
)
{
this
.
stuList
=
res
.
Data
}
})
},
//提交
save
()
{
if
(
this
.
msg
.
ClassId
<=
0
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
'top'
,
message
:
"请选择班级"
})
return
}
if
(
this
.
selected
.
length
===
0
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
'top'
,
message
:
"至少选择一次上课时间"
})
return
}
if
(
this
.
selectedStu
.
length
===
0
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
'top'
,
message
:
"至少选择一个学员"
})
return
}
let
timesIds
=
this
.
selected
.
map
(
e
=>
{
return
e
.
ClassTimeId
}).
toString
()
let
stuIds
=
this
.
selectedStu
.
map
(
e
=>
{
return
e
.
Id
}).
toString
()
let
obj
=
{
Id
:
0
,
ClassId
:
this
.
msg
.
ClassId
,
ClassTimeIds
:
timesIds
,
OrderGuestIds
:
stuIds
,
Remarks
:
this
.
msg
.
Remarks
}
console
.
log
(
366
,
obj
)
this
.
saveLoading
=
true
setStuInviteApply
(
obj
).
then
(
res
=>
{
this
.
saveLoading
=
false
if
(
res
.
Code
===
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'操作成功!'
,
position
:
'top'
})
this
.
persistent
=
false
this
.
$emit
(
'success'
)
}
else
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
'top'
,
message
:
res
.
Message
})
}
}).
catch
(
err
=>
{
this
.
saveLoading
=
true
})
}
},
}
</
script
>
<
style
>
</
style
>
src/pages/course/classManage.vue
View file @
aeb569e5
...
...
@@ -122,7 +122,12 @@
</template>
<
template
v-slot:body-cell-TeacherName=
"props"
>
<q-td
auto-width
:props=
"props"
>
<span
style=
"color:#3FC4FF;"
>
{{
props
.
row
.
TeacherName
}}
</span>
<template
v-if=
"props.row.Teacher_Id==0"
>
<span
style=
"color:red"
>
未指定
</span>
</
template
>
<
template
v-else
>
<span
style=
"color:#3FC4FF;"
>
{{
props
.
row
.
TeacherName
}}
</span>
</
template
>
</q-td>
</template>
<
template
v-slot:body-cell-ClassPersion=
"props"
>
...
...
src/pages/sale/japaneseTrain.vue
View file @
aeb569e5
...
...
@@ -114,15 +114,20 @@
<div
class=
"d2"
>
<div
class=
"row"
style=
"align-items: center ;margin:0;padding:0;"
>
<span
class=
"d2-n"
>
带课老师
</span>
<q-avatar
rounded
size=
"sm"
v-if=
"item.TeacherHead&&item.TeacherHead!=''"
>
<img
:src=
"item.TeacherHead"
/>
</q-avatar>
<q-avatar
v-else
rounded
size=
"sm"
color=
"teal-10"
text-color=
"white"
>
<
template
v-if=
"item.TeacherName&&item.TeacherName!=''"
>
{{
item
.
TeacherName
.
substr
(
0
,
1
)
}}
</
template
>
</q-avatar>
{{item.TeacherName}}
<
template
v-if=
"item.Teacher_Id==0"
>
<span
style=
"color:red"
>
未指定
</span>
</
template
>
<
template
v-else
>
<q-avatar
rounded
size=
"sm"
v-if=
"item.TeacherHead&&item.TeacherHead!=''"
>
<img
:src=
"item.TeacherHead"
/>
</q-avatar>
<q-avatar
v-else
rounded
size=
"sm"
color=
"teal-10"
text-color=
"white"
>
<template
v-if=
"item.TeacherName&&item.TeacherName!=''"
>
{{
item
.
TeacherName
.
substr
(
0
,
1
)
}}
</
template
>
</q-avatar>
{{item.TeacherName}}
</template>
</div>
<div><span
class=
"d2-n"
>
上课教室
</span>
{{item.RoomName}}
</div>
<div><span
class=
"d2-n"
>
上课时间
</span><span
...
...
@@ -524,6 +529,14 @@
},
//立即报名和插班报名
placeAnorder
(
item
,
type
)
{
if
(
item
.
Teacher_Id
==
0
){
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`请联系班级管理员,关联班级老师后报名`
})
return
}
this
.
isChaBan
=
type
;
this
.
orderObj
.
ClassId
=
item
.
ClassId
;
this
.
orderObj
.
Unit_Price
=
item
.
SellPrice
;
...
...
src/pages/sale/reserveClass.vue
View file @
aeb569e5
...
...
@@ -44,6 +44,16 @@
<q-btn
color=
"accent"
size=
"sm"
class=
"q-mr-md"
icon=
"add"
label=
"添加试听"
@
click=
"editVisitor(null)"
/>
</div>
</
template
>
<
template
v-slot:body-cell-TeacherName=
"props"
>
<q-td>
<template
v-if=
"props.row.TeacherId==0"
>
<span
style=
"color:red"
>
未指定
</span>
</
template
>
<
template
>
{{
props
.
row
.
TeacherName
}}
</
template
>
</q-td>
</template>
<
template
v-slot:body-cell-ClassContent=
"props"
>
<q-td
:props=
"props"
>
<div
style=
"min-width: 150px;word-break: break-word;white-space: normal;"
>
...
...
src/pages/system/processSet.vue
View file @
aeb569e5
...
...
@@ -23,6 +23,10 @@
<!-- 转班流程 -->
<transfer-form></transfer-form>
</
template
>
<
template
v-if=
"tabCheck=='5'"
>
<!-- 临时上课邀请流程 -->
<temporaryClass-form></temporaryClass-form>
</
template
>
</div>
</div>
</template>
...
...
@@ -31,6 +35,7 @@
import
changeclassflowForm
from
'../../components/flow/changeclassflow-form'
;
import
stopclassflowForm
from
'../../components/flow/stopclassflow-form'
;
import
transferForm
from
'../../components/flow/transfer-form'
;
import
temporaryClassForm
from
'../../components/flow/temporaryClass-form'
;
export
default
{
meta
:
{
title
:
"流程设置"
...
...
@@ -39,7 +44,8 @@
backclassflowForm
,
changeclassflowForm
,
stopclassflowForm
,
transferForm
transferForm
,
temporaryClassForm
},
data
()
{
return
{
...
...
@@ -58,6 +64,10 @@
{
name
:
"4"
,
label
:
"转班流程"
},
{
name
:
"5"
,
label
:
"临时上课邀请流程"
}
],
tabCheck
:
'1'
,
...
...
src/pages/teacher/changeClassManager.vue
View file @
aeb569e5
...
...
@@ -137,7 +137,6 @@
import
stopbillForm
from
'../../components/sale/stopbill-form'
;
import
createbackbillForm
from
'../../components/sale/createbackbill-form'
;
import
ordertransForm
from
'../../components/sale/ordertrans-form'
;
export
default
{
meta
:
{
title
:
"退课单据"
...
...
src/pages/teacher/studentManager.vue
View file @
aeb569e5
...
...
@@ -74,6 +74,8 @@
<
template
v-slot:top=
"props"
>
<div
class=
"col-2 q-table__title"
>
学员管理
</div>
<q-space
/>
<q-btn
color=
"accent"
size=
"sm"
class=
"q-mr-md"
label=
"临时上课邀请"
@
click=
"isShowProvisionalInvite=true"
/>
</
template
>
<!--课时-->
<
template
v-slot:body-cell-TotalPlanNum=
"props"
>
...
...
@@ -109,6 +111,7 @@
</
template
>
</q-table>
<StopLesson-form
v-if=
"isShowStopLesson"
:setObj=
"stuObj"
@
success=
"reloadPage"
@
close=
"closeMenuSaveForm"
/>
<ProvisionalInvite-form
v-if=
"isShowProvisionalInvite"
@
close=
"closeMenuSaveForm"
/>
</div>
...
...
@@ -134,6 +137,7 @@
// import classinfoForm from '../../components/course/classinfo-form';
// import othercourseForm from '../../components/course/othercourse-form';
import
StopLessonForm
from
'../../components/teacher/stopLessonForm'
import
ProvisionalInviteForm
from
'../../components/teacher/provisionalInviteForm'
export
default
{
meta
:
{
title
:
"班级管理"
...
...
@@ -142,7 +146,8 @@
// classForm,
// classinfoForm,
// othercourseForm,
StopLessonForm
StopLessonForm
,
ProvisionalInviteForm
},
data
()
{
return
{
...
...
@@ -228,6 +233,7 @@
allClassList
:
[],
isShowStopLesson
:
false
,
stuObj
:{},
isShowProvisionalInvite
:
false
,
}
},
created
()
{
...
...
@@ -381,6 +387,7 @@
//关闭弹窗
closeMenuSaveForm
()
{
this
.
isShowStopLesson
=
false
;
this
.
isShowProvisionalInvite
=
false
;
},
//刷新页面
reloadPage
()
{
...
...
src/pages/user/billquery.vue
View file @
aeb569e5
...
...
@@ -149,6 +149,9 @@
<changebill-form
v-if=
"isShowChangeBillForm"
:seting-obj=
"billObj"
:showType=
"showType"
@
close=
"closeBillForm"
@
success=
"refreshPage"
>
</changebill-form>
<ordertrans-form
v-if=
"isShowTransForm"
:seting-obj=
"billObj"
:showType=
"showType"
@
close=
"closeBillForm"
@
success=
"refreshPage"
>
</ordertrans-form>
</div>
</div>
</template>
...
...
@@ -166,6 +169,7 @@
import
backbillForm
from
'../../components/sale/backbill-form'
;
import
changebillForm
from
'../../components/sale/changebill-form'
;
import
ordertransForm
from
'../../components/sale/ordertrans-form'
export
default
{
meta
:
{
...
...
@@ -174,6 +178,7 @@
components
:
{
backbillForm
,
changebillForm
,
ordertransForm
},
data
()
{
return
{
...
...
@@ -268,6 +273,7 @@
EmployeeList
:
[],
AllemployeeList
:
[],
IsEditEduReceipAudit
:
false
,
//是否有修改审核人权限
isShowTransForm
:
false
}
},
created
()
{
...
...
@@ -307,6 +313,7 @@
closeBillForm
()
{
this
.
isShowBackBillForm
=
false
;
this
.
isShowChangeBillForm
=
false
;
this
.
isShowTransForm
=
false
;
this
.
billObj
=
{};
},
//显示表单
...
...
@@ -319,6 +326,10 @@
else
if
(
item
.
ReceiptType
==
2
)
{
this
.
isShowBackBillForm
=
true
;
}
//转班
else
if
(
item
.
ReceiptType
==
5
){
this
.
isShowTransForm
=
true
;
}
this
.
showType
=
type
;
this
.
billObj
=
item
;
this
.
isShowEdit
=
false
;
...
...
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