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
798a7380
Commit
798a7380
authored
Jul 21, 2021
by
罗超
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/confucius
into master
# Conflicts: # src/router/routes.js
parents
9819dec8
3a7252b2
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
396 additions
and
352 deletions
+396
-352
index.js
src/api/stuMan/index.js
+11
-3
class-form.vue
src/components/course/class-form.vue
+2
-8
backbill-form.vue
src/components/sale/backbill-form.vue
+10
-5
ordertrans-form.vue
src/components/sale/ordertrans-form.vue
+3
-1
employee-set.vue
src/components/school/manager/employee-set.vue
+44
-21
role-form.vue
src/components/system/role-form.vue
+5
-7
makeup.vue
src/pages/course/makeup.vue
+16
-19
myOrder.vue
src/pages/sale/myOrder.vue
+1
-1
studyOrder.vue
src/pages/sale/studyOrder.vue
+1
-1
studyOrderStatistics.vue
src/pages/sale/studyOrderStatistics.vue
+1
-1
studentManage.vue
src/pages/stuMan/studentManage.vue
+292
-280
processSet.vue
src/pages/system/processSet.vue
+4
-4
changeClassManager.vue
src/pages/teacher/changeClassManager.vue
+1
-1
routes.js
src/router/routes.js
+5
-0
No files found.
src/api/stuMan/index.js
View file @
798a7380
import
request
from
'../../utils/request'
/**
* 获取
部门分页列表
* 获取
学员出勤情况
*/
export
function
get
DeptPage
(
data
)
{
export
function
get
StudentAttendanceDayStatistics
(
data
)
{
return
request
({
url
:
'/
User/GetDeptPageList
'
,
url
:
'/
stu/GetStudentAttendanceDayStatistics
'
,
method
:
'post'
,
data
});
}
//学管 获取访客列表
export
function
getVisitorAllPageList
(
data
)
{
return
request
({
url
:
'/DutyPlan/GetVisitorAllPageList'
,
method
:
'post'
,
data
})
}
\ No newline at end of file
src/components/course/class-form.vue
View file @
798a7380
...
...
@@ -305,8 +305,6 @@
</q-icon>
</
template
>
</q-input>
<!-- <q-input filled stack-label maxlength="20" v-model="sItem.StartTime" placeholder="08:30"
:dense="false" class="col-6 q-pr-lg" label="开始时间" /> -->
</td>
<td>
<q-input
filled
v-model=
"sItem.EndTime"
class=
"col-6 q-pr-lg"
placeholder=
"结束时间"
mask=
"time"
>
...
...
@@ -322,8 +320,6 @@
</q-icon>
</
template
>
</q-input>
<!-- <q-input filled stack-label maxlength="20" v-model="sItem.EndTime" placeholder="09:30" :dense="false"
class="col-6 q-pr-lg" label="结束时间" /> -->
</td>
<td>
<q-input
filled
stack-label
maxlength=
"20"
v-model=
"sItem.TimeHour"
...
...
@@ -602,10 +598,8 @@
saveCourse
()
{
this
.
$refs
.
ClassName
.
validate
();
this
.
$refs
.
ClassPersion
.
validate
();
this
.
$refs
.
OriginalPrice
.
validate
();
this
.
$refs
.
SellPrice
.
validate
();
if
(
!
this
.
$refs
.
ClassName
.
hasError
&&
!
this
.
$refs
.
ClassPersion
.
hasError
&&
!
this
.
$refs
.
OriginalPrice
.
hasError
&&
!
this
.
$refs
.
SellPrice
.
hasError
)
{
if
(
!
this
.
$refs
.
ClassName
.
hasError
&&
!
this
.
$refs
.
ClassPersion
.
hasError
)
{
if
(
this
.
objOption
.
IsOpenCommission
==
1
)
{
if
(
this
.
objOption
.
CommissionValue
==
''
)
{
this
.
$q
.
notify
({
...
...
src/components/sale/backbill-form.vue
View file @
798a7380
...
...
@@ -167,7 +167,7 @@
<div
class=
"row backInfo_One"
>
<div
class=
"col-6"
>
<span
class=
"backInfo_Title"
>
合同信息:
</span>
<span
class=
"backOtherInfo"
style=
"cursor: pointer;text-decoration: underline;"
@
click=
"getlookContractNo(setingObj.DataObj.Contract
No
)"
v-if=
"setingObj.DataObj.ContractNo && setingObj.DataObj.ContractNo!=''"
>
<span
class=
"backOtherInfo"
style=
"cursor: pointer;text-decoration: underline;"
@
click=
"getlookContractNo(setingObj.DataObj.Contract
Id
)"
v-if=
"setingObj.DataObj.ContractNo && setingObj.DataObj.ContractNo!=''"
>
{{
setingObj
.
DataObj
.
ContractNo
}}
</span>
<span
v-else
>
无
</span>
...
...
@@ -454,10 +454,15 @@
'OrderId'
:
OrderId
})
},
getlookContractNo
(
ContractNo
){
//跳转合同管理
this
.
OpenNewUrl
(
'/sale/contractManage'
,
{
'Name'
:
ContractNo
})
getlookContractNo
(
ContractId
){
//跳转合同管理
let
routeUrl
=
this
.
$router
.
resolve
({
path
:
"/contractView"
,
query
:
{
ContractId
:
ContractId
}
});
window
.
open
(
routeUrl
.
href
,
'_blank'
);
},
getlookFinishHours
(){
//跳转学员消耗课时明细
let
StartMonth
=
''
...
...
src/components/sale/ordertrans-form.vue
View file @
798a7380
...
...
@@ -124,7 +124,9 @@
</div>
<div
class=
"row backInfo_One"
>
<div
class=
"col-6"
>
<span
class=
"backInfo_Title"
>
调课编号:
</span>
<span
class=
"backInfo_Title"
>
<span
v-if=
"setingObj.ReceiptType==6"
>
分拆
</span>
<span
v-if=
"setingObj.ReceiptType==5"
>
转班
</span>
编号:
</span>
<span
class=
"backOtherInfo"
>
{{
setingObj
.
DataObj
.
Id
}}
</span>
</div>
<div
class=
"col-6"
>
...
...
src/components/school/manager/employee-set.vue
View file @
798a7380
...
...
@@ -118,17 +118,17 @@
</div>
</div>
<div
class=
"row"
style=
"margin-top:20px;"
v-if=
"deptObj.schoolType==1"
>
<div
class=
"col-
6
"
>
<div
class=
"col-
12
"
>
<q-select
filled
stack-label
@
input=
"getDepartList()"
option-value=
"SId"
option-label=
"SName"
class=
"
col-6 q-pr-lg
q-pb-lg"
v-model=
"deptObj.School_Id"
ref=
"School_Id"
:options=
"schoolList"
class=
"q-pb-lg"
v-model=
"deptObj.School_Id"
ref=
"School_Id"
:options=
"schoolList"
label=
"所属校区"
:dense=
"false"
emit-value
map-options
/>
</div>
</div>
<div
class=
"row"
style=
"margin-top:
20
px;"
>
<div
class=
"col-
6
"
>
<div
class=
"row"
style=
"margin-top:
15
px;"
>
<div
class=
"col-
12
"
>
<selectTree
:treeData=
'DeptList'
:defaultArray=
"returnString"
nodeKey=
"DeptId"
:multiple=
"false"
labelKey=
"DeptName"
childrenKey=
"ChildList"
tipText=
"选择部门"
@
getChild=
"getChild"
classStr=
"col-
6 q-pr-lg
q-pb-lg"
></selectTree>
classStr=
"col-
12
q-pb-lg"
></selectTree>
</div>
</div>
</div>
...
...
@@ -139,9 +139,9 @@
<div>
修改岗位
</div>
</div>
<div
class=
"row"
style=
"margin-top:20px;"
>
<div
class=
"col-
6
"
>
<div
class=
"col-
12
"
>
<q-select
filled
stack-label
option-value=
"PostId"
option-label=
"PostName"
v-model=
"Post_Id"
ref=
"Post_Id"
:options=
"PostList"
label=
"岗位"
:dense=
"false"
class=
"
col-6 q-pr-lg
q-pb-lg"
emit-value
map-options
/>
:options=
"PostList"
label=
"岗位"
:dense=
"false"
class=
"q-pb-lg"
emit-value
map-options
/>
</div>
</div>
</div>
...
...
@@ -167,20 +167,20 @@
</div>
</div>
<div
class=
"row"
style=
"margin-top:20px;"
>
<div
class=
"col-
6
"
>
<div
class=
"col-
12
"
>
<q-select
filled
stack-label
option-value=
"Id"
option-label=
"Name"
v-model=
"changeTypeMsg.TargetAccountType"
ref=
"AccountType"
:options=
"accountTypeList"
label=
"目标职能"
:dense=
"false"
class=
"col-6 q-p
r-lg q-p
b-lg"
ref=
"AccountType"
:options=
"accountTypeList"
label=
"目标职能"
:dense=
"false"
class=
"col-6 q-pb-lg"
emit-value
map-options
/>
</div>
</div>
<div
class=
"row"
style=
"margin-top:20px;"
>
<div
class=
"col-
6
"
>
<q-input
v-model=
"changeTypeMsg.Remark"
label=
"调整原因"
filled
type=
"textarea"
class=
"col-6 q-p
r-lg q-p
b-lg"
<div
class=
"row"
>
<div
class=
"col-
12
"
>
<q-input
v-model=
"changeTypeMsg.Remark"
label=
"调整原因"
filled
type=
"textarea"
class=
"col-6 q-pb-lg"
maxlength=
"100"
/>
</div>
</div>
</div>
<div
style=
"text-align:
left;margin-lef
t:20px;"
>
<div
style=
"text-align:
right;margin-righ
t:20px;"
>
<q-btn
color=
"primary"
label=
"确定"
@
click=
"saveReuslt()"
style=
"width:300px;"
/>
</div>
</q-card>
...
...
@@ -294,11 +294,6 @@
getSchool
()
{
getSchoolDropdown
({}).
then
(
res
=>
{
this
.
schoolList
=
res
.
Data
;
var
obj
=
{
SName
:
'总部'
,
SId
:
0
}
this
.
schoolList
.
unshift
(
obj
);
})
},
closeShenheForm
()
{
...
...
@@ -369,7 +364,14 @@
UpdateEmployeeLeave
(
Msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$emit
(
'success'
);
this
.
$emit
(
'close'
)
this
.
$emit
(
'close'
);
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'保存成功!'
,
position
:
'top'
})
}
})
}
...
...
@@ -394,7 +396,14 @@
UpdateEmployeeDept
(
obj
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$emit
(
'success'
);
this
.
$emit
(
'close'
)
this
.
$emit
(
'close'
);
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'保存成功!'
,
position
:
'top'
})
}
})
}
...
...
@@ -417,7 +426,14 @@
UpdateEmployeePost
(
obj
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$emit
(
'success'
);
this
.
$emit
(
'close'
)
this
.
$emit
(
'close'
);
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'保存成功!'
,
position
:
'top'
})
}
})
}
...
...
@@ -425,6 +441,13 @@
if
(
this
.
setingObj
.
type
==
5
)
{
UpdateEmployeeType
(
this
.
changeTypeMsg
).
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'
)
}
...
...
src/components/system/role-form.vue
View file @
798a7380
...
...
@@ -9,16 +9,13 @@
.role-form
.role_MenuList
{
width
:
100%
;
height
:
40px
;
height
:
auto
;
border-radius
:
3px
;
border
:
1px
solid
#2961FE
;
color
:
#2961FE
;
align-items
:
center
;
font-size
:
12px
;
white-space
:
nowrap
;
}
.role-form
.role_TreeList
{
height
:
250px
;
overflow
:
auto
;
...
...
@@ -52,8 +49,9 @@
}
.role-form
.role_MenuList
span
{
width
:
80px
;
.role-form
.role_MenuList
>
span
{
width
:
auto
;
padding
:
0
14px
;
display
:
inline-block
;
text-align
:
center
;
height
:
100%
;
...
...
@@ -71,7 +69,7 @@
}
.role-form
.role_ItemList
{
width
:
200px
;
min-
width
:
200px
;
height
:
300px
;
background-color
:
#F1F1F1
;
margin-right
:
10px
;
...
...
src/pages/course/makeup.vue
View file @
798a7380
...
...
@@ -23,7 +23,7 @@
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"refreshPage"
standout=
"bg-primary text-white"
v-model=
"msg.MakeUpStatus"
clearable
option-value=
"Id"
option-label=
"Name"
:options=
"statusList"
emit-value
map-options
label=
"
状态
"
/>
option-value=
"Id"
option-label=
"Name"
:options=
"statusList"
emit-value
map-options
label=
"
处理结果
"
/>
</div>
<div
class=
"col-3"
>
<div
class=
"col-3 Sysuser_Date"
>
...
...
@@ -77,14 +77,14 @@
</
template
>
<
template
v-slot:body-cell-optioned=
"props"
>
<q-td
:props=
"props"
>
<q-btn
v-if=
"props.row.MakeUpStatus==3"
flat
size=
"xs"
icon=
"edit"
color=
"accent"
style=
"font-weight:400"
label=
"处理
"
@
click=
"isShowEdit=true,getClickItem(props.row)"
>
<q-popup-proxy>
<q-btn
flat
size=
"xs"
icon=
"edit"
color=
"accent"
style=
"font-weight:400"
:label=
"props.row.MakeUpStatus == 1?'处理':'修改'
"
@
click=
"isShowEdit=true,getClickItem(props.row)"
>
<q-popup-proxy
>
<q-banner
v-if=
"isShowEdit"
>
<div
class=
"calenderDialog"
>
<div
style=
"margin:10px 0 15px 0;"
>
设置处理状态
</div>
<q-select
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
v-model=
"statusMsg.MakeUpStatus"
:options=
"statusList
"
emit-value
map-options
label=
"班级状态
"
/>
v-model=
"statusMsg.MakeUpStatus"
:options=
"statusList
2"
emit-value
map-options
label=
"是否可补课
"
/>
<q-card-actions
align=
"right"
class=
"bg-white"
style=
"margin-top:20px;"
>
<q-btn
label=
"取消"
flat
color=
"grey-10"
size=
"sm"
@
click=
"isShowEdit=false"
style=
"font-weight:400 !important"
/>
...
...
@@ -160,10 +160,16 @@
},
{
name
:
'MakeUpStatusStr'
,
label
:
'
状态
'
,
label
:
'
处理结果
'
,
align
:
'left'
,
field
:
'MakeUpStatusStr'
},
{
name
:
'TimeHour'
,
label
:
'课时长度'
,
align
:
'left'
,
field
:
'TimeHour'
},
{
name
:
'optioned'
,
label
:
'操作'
,
...
...
@@ -176,7 +182,7 @@
pageIndex
:
1
,
pageSize
:
12
,
rowsPerPage
:
12
,
MakeUpStatus
:
3
,
//(2-已处理,3-未处理)
MakeUpStatus
:
1
,
//(2-已处理,3-未处理)
GuestName
:
""
,
//学员名称
ClassName
:
""
,
//班级名称
CourseName
:
""
,
//课程名称
...
...
@@ -187,18 +193,8 @@
},
pageCount
:
0
,
isShowEdit
:
false
,
//是否显示修改
statusList
:
[{
Id
:
-
1
,
Name
:
'全部'
},
{
Id
:
2
,
Name
:
'已处理'
},
{
Id
:
3
,
Name
:
"未处理"
}
],
statusList
:
[{
Id
:
1
,
Name
:
'未处理'
},
{
Id
:
2
,
Name
:
'可补课'
},{
Id
:
3
,
Name
:
"不可补课"
}],
statusList2
:
[
{
Id
:
2
,
Name
:
'可补课'
},{
Id
:
3
,
Name
:
"不可补课"
}],
statusMsg
:
{
Id
:
0
,
MakeUpStatus
:
2
,
...
...
@@ -246,6 +242,7 @@
this
.
statusMsg
.
ClassCheckId
=
item
.
ClassCheckId
;
this
.
statusMsg
.
GuestId
=
item
.
OrderGuestId
;
this
.
statusMsg
.
Id
=
item
.
Id
;
this
.
statusMsg
.
MakeUpStatus
=
item
.
MakeUpStatus
},
clearMsg
()
{
this
.
statusMsg
.
Id
=
0
;
...
...
src/pages/sale/myOrder.vue
View file @
798a7380
...
...
@@ -25,7 +25,7 @@
option-label=
"CourseName"
v-model=
"msg.CouseId"
:options=
"CourseList"
emit-value
map-options
label=
"学习课程"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"
resetSearch
"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
<q-select
@
input=
"
msg.OrderState==0?(msg.Q_OrderState = 1):msg.Q_OrderState=0,resetSearch()
"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.OrderState"
:options=
"OrderStateList"
emit-value
map-options
label=
"订单状态"
/>
</div>
<div
class=
"col-3"
>
...
...
src/pages/sale/studyOrder.vue
View file @
798a7380
...
...
@@ -17,7 +17,7 @@
@
clear=
"resetSearch"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"
resetSearch
"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
<q-select
@
input=
"
msg.OrderState==0?(msg.Q_OrderState = 1):msg.Q_OrderState=0,resetSearch()
"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.OrderState"
:options=
"OrderStateList"
emit-value
map-options
label=
"订单状态"
/>
</div>
<div
class=
"col-3"
>
...
...
src/pages/sale/studyOrderStatistics.vue
View file @
798a7380
...
...
@@ -23,7 +23,7 @@
@
clear=
"resetSearch"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"
resetSearch
"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
<q-select
@
input=
"
msg.OrderState==0?(msg.Q_OrderState = 1):msg.Q_OrderState=0,resetSearch()
"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.OrderState"
:options=
"OrderStateList"
emit-value
map-options
label=
"订单状态"
/>
</div>
<div
class=
"col-3"
>
...
...
src/pages/stuMan/studentManage.vue
View file @
798a7380
<
style
>
.studentManage
.el-input
{
width
:
100%
;
border
:
none
;
background-color
:
transparent
;
}
.studentManage
.el-input__inner
{
width
:
100%
;
border
:
none
;
background-color
:
transparent
;
}
</
style
>
<
template
>
<div
class=
"page-body"
>
<div
class=
"page-search row items-center
"
>
<div
class=
"page-body
studentManage
"
>
<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
@
input=
"resetSearch"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.CourseName"
label=
"课程名称
"
@
clear=
"resetSearch"
maxlength=
"20
"
/>
<q-
select
@
input=
"getClass"
standout=
"bg-primary text-white"
option-value=
"SId"
option-label=
"SName
"
v-model=
"msg.School_Id"
:options=
"schoolList"
emit-value
map-options
label=
"关联校区
"
/>
</div>
<div
class=
"col-3"
>
<select-tree
:treeData=
"TreeCategoryList"
:defaultArray=
"returnString"
nodeKey=
"CateId"
:multiple=
"true"
labelKey=
"CateName"
childrenKey=
"ChildList"
tipText=
"课程系列"
@
getChild=
"getChild"
></select-tree>
<q-select
@
input=
"getClass"
standout=
"bg-primary text-white"
option-value=
"CourseId"
option-label=
"CourseName"
v-model=
"msg.CouseId"
:options=
"CourseList"
emit-value
map-options
label=
"课程"
@
change=
""
use-input
@
filter=
"filterCourse"
>
<template
v-slot:no-option
>
<q-item>
<q-item-section
class=
"text-grey"
>
未找到相关数据
</q-item-section>
</q-item>
</
template
>
</q-select>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"refreshPage"
standout=
"bg-primary text-white"
option-value=
"ClassId"
option-label=
"ClassName"
v-model=
"msg.ClassId"
:options=
"ClassList"
emit-value
map-options
label=
"班级"
use-input
@
filter=
"filterClass"
/>
</div>
<div
class=
"col-3 Sysuser_Date"
>
<q-field
filled
>
<
template
v-slot:control
>
<el-date-picker
v-model=
"msg.StartDate"
type=
"date"
placeholder=
"开始日期"
value-format=
"yyyy-MM-dd"
:picker-options=
"option"
:clearable =
'false'
@
change=
"resetSearch"
>
</el-date-picker>
</
template
>
</q-field>
</div>
<div
class=
"col-3"
>
<q-input
@
input=
"resetSearch"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.GuestName"
label=
"学生名称"
@
clear=
"resetSearch"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.CheckStatus"
:options=
"AttendanceList2"
emit-value
map-options
label=
"出勤状态"
/>
</div>
</div>
</div>
<div
class=
"page-content"
>
...
...
@@ -25,144 +66,101 @@
<q-space
/>
</
template
>
<
template
v-slot:body-cell-CoverImg=
"props"
>
<q-td
:props=
"props"
>
<q-img
:src=
"props.value"
spinner-color=
"white"
style=
"height: 54px; max-width: 100px"
class=
"rounded-borders"
>
</q-img>
</q-td>
</
template
>
<
template
v-slot:body-cell-CourseIntro=
"props"
>
<q-td
:props=
"props"
>
<span
v-html=
"props.value"
></span>
</q-td>
</
template
>
<
template
v-slot:body-cell-PreferentialList=
"props"
>
<
template
v-slot:body-cell-GuestName=
"props"
>
<q-td
:props=
"props"
style=
"padding-right:0px"
>
<div
v-for=
"x in props.value"
>
<div
class=
"border-bottom"
v-if=
"x.PriceDiscountType == 1"
>
买
{{
x
.
BuyNum
}}
送
{{
x
.
SendNum
}}
</div>
<div
class=
"border-bottom"
v-if=
"x.PriceDiscountType == 2"
>
单人报名享优惠
{{
x
.
PriceMoney
}}
%
<div
v-for=
"x in props.row.GuestList"
>
<div
class=
"border-bottom"
>
{{
x
.
GuestName
}}
</div>
<div
class=
"border-bottom"
v-if=
"x.PriceDiscountType == 3"
>
双人报名优惠
{{
x
.
PriceMoney
}}
%
</div>
<div
class=
"border-bottom"
v-if=
"x.PriceDiscountType == 4"
>
续费享优惠
{{
x
.
PriceMoney
}}
%
</div>
<div
class=
"remark-font"
v-if=
"x.PriceDiscountType == 0"
>
暂无优惠政策
</div>
</div>
<div
v-if=
"!props.value || props.value.length == 0"
>
<div
class=
"remark-font"
>
暂无优惠政策
</div>
<div
v-if=
"!props.row.GuestList || props.row.GuestList.length == 0"
>
<div
class=
"remark-font"
>
暂无
</div>
</div>
</q-td>
</
template
>
<
template
v-slot:body-cell-PreferentialListSellCommission=
"props"
>
<q-td
:props=
"props"
style=
"padding-right:0px;padding-left:0px"
>
<div
v-for=
"x in props.value"
>
<div
class=
"border-bottom"
style=
"padding-left: 16px;padding-right: 16px"
:class=
"
{ 'text-red': x.SaleCommissionType == 1 }" v-if="x.PriceDiscountType != 0">
{{
x
.
SaleCommissionType
==
1
?
"¥"
:
""
}}{{
x
.
SaleCommissionMoney
}}{{
x
.
SaleCommissionType
==
0
?
"%"
:
""
}}
</div>
<div
v-if=
"x.PriceDiscountType == 0"
>
<div
class=
"remark-font"
>
暂无佣金信息
</div>
<
template
v-slot:body-cell-CurrentDeductionHours=
"props"
>
<q-td
:props=
"props"
>
<div
v-for=
"x in props.row.GuestList"
>
<div
class=
"border-bottom"
>
{{
x
.
CurrentDeductionHours
}}
</div>
</div>
<div
v-if=
"!props.
value || props.value
.length == 0"
>
<div
class=
"remark-font"
>
暂无
佣金信息
</div>
<div
v-if=
"!props.
row.GuestList || props.row.GuestList
.length == 0"
>
<div
class=
"remark-font"
>
暂无
</div>
</div>
</q-td>
</
template
>
<
template
v-slot:body-cell-PreferentialListB2BCommission=
"props"
>
<q-td
:props=
"props"
style=
"padding-left:0px"
>
<div
v-for=
"x in props.value"
>
<div
class=
"border-bottom"
style=
"padding-left: 16px"
:class=
"
{ 'text-red': x.B2BCommissionType == 1 }"
v-if="x.PriceDiscountType != 0">
{{
x
.
B2BCommissionType
==
1
?
"¥"
:
""
}}{{
x
.
B2BCommissionMoney
}}{{
x
.
B2BCommissionType
==
0
?
"%"
:
""
}}
</div>
<div
v-if=
"x.PriceDiscountType == 0"
>
<div
class=
"remark-font"
>
暂无佣金信息
</div>
</div>
</div>
<div
v-if=
"!props.value || props.value.length == 0"
>
<div
class=
"remark-font"
>
暂无佣金信息
</div>
</div>
</q-td>
</
template
>
<
template
v-slot:body-cell-EducationCommission=
"props"
>
<q-td
:props=
"props"
style=
"padding-left:0px"
>
<div
v-for=
"x in props.value"
>
<div
class=
"border-bottom"
style=
"padding-left: 16px"
:class=
"
{ 'text-red': x.EduCommissionType == 1 }"
v-if="x.PriceDiscountType != 0">
{{
x
.
EduCommissionType
==
1
?
"¥"
:
""
}}{{
x
.
EduCommissionMoney
}}{{
x
.
EduCommissionType
==
0
?
"%"
:
""
}}
</div>
<div
v-if=
"x.PriceDiscountType == 0"
>
<div
class=
"remark-font"
>
暂无佣金信息
</div>
<
template
v-slot:body-cell-CheckStatus=
"props"
>
<q-td
:props=
"props"
>
<div
v-for=
"x in props.row.GuestList"
>
<div
class=
"border-bottom"
>
<span
v-if=
"x.CheckStatus == 0"
>
正常
</span>
<span
v-if=
"x.CheckStatus == 1"
>
缺席
</span>
<span
v-if=
"x.CheckStatus == 2"
>
请假
</span>
</div>
</div>
<div
v-if=
"!props.
value || props.value
.length == 0"
>
<div
class=
"remark-font"
>
暂无
佣金信息
</div>
<div
v-if=
"!props.
row.GuestList || props.row.GuestList
.length == 0"
>
<div
class=
"remark-font"
>
暂无
</div>
</div>
</q-td>
</
template
>
<
template
v-slot:body-cell-Status=
"props"
>
<q-td
:props=
"props"
>
<q-badge
:color=
"props.value == 1 ? 'negative' : 'primary'"
:label=
"props.value == 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"
/>
<
!--
<
q-pagination
class=
"full-width justify-end"
v-model=
"msg.pageIndex"
color=
"primary"
:max=
"pageCount"
:input=
"true"
@
input=
"changePage"
/>
-->
</
template
>
<
template
v-slot:body-cell-optioned=
"props"
>
<q-td
:props=
"props"
>
<q-td
:props=
"props"
>
<div
v-for=
"x in props.row.GuestList"
>
<div
class=
"border-bottom"
>
<q-btn
flat
size=
"xs"
icon=
"edit"
color=
"accent"
style=
"font-weight:400"
label=
"编辑"
@
click=
"EditCourse(props.row, 1)"
/>
<q-btn
flat
size=
"xs"
icon=
"edit"
color=
"accent"
style=
"font-weight:400"
label=
"价格设置"
@
click=
"EditCourse(props.row, 2)"
v-if=
"isHavePriceAction"
/>
<q-btn-dropdown
flat
size=
"xs"
color=
"dark"
label=
"更多"
style=
"margin-left:10px;"
>
<q-list>
<q-item
clickable
v-close-popup
@
click=
"DeleteCourse(props.row,1)"
v-if=
"props.row.Status==0"
>
<q-item-section>
<q-item-label>
删除
</q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-close-popup
@
click=
"DeleteCourse(props.row,0)"
v-if=
"props.row.Status==1"
>
<q-item-section>
<q-item-label>
恢复
</q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-close-popup
@
click=
"goMycourse(props.row)"
>
<q-item-section>
<q-item-label>
课程详情
</q-item-label>
</q-item-section>
</q-item>
</q-list>
</q-btn-dropdown>
@
click=
"EditCourse(x,props.row)"
/>
</div>
</div>
</q-td>
</
template
>
</q-table>
</div>
<!-- 修改状态 -->
<q-dialog
v-model=
"IsShowDialog"
persistent
transition-show=
"scale"
transition-hide=
"scale"
>
<q-card
style=
"width: 400px;max-width:500px;"
>
<q-card-section>
<div
class=
"text-h6"
>
修改出勤状态
</div>
</q-card-section>
<q-card-section
class=
"q-pt-none scroll"
style=
"max-height: 70vh"
>
<q-select
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
v-model=
"editMsg.CheckStatus"
:options=
"AttendanceList"
emit-value
map-options
label=
"出勤状态"
/>
</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=
"IsShowDialog=false"
/>
<q-btn
label=
"立即提交"
color=
"accent"
class=
"q-px-md"
style=
"font-weight:400 !important"
@
click=
"saveAttendance"
/>
</q-card-actions>
</q-card>
</q-dialog>
</div>
</template>
<
script
>
import
{
queryCoursePage
,
queryCourseCategoryTree
,
deleteCourseInfo
}
from
"../../api/course/index"
;
addClassCheck
}
from
'../../api/course/class'
;
import
{
queryCourseDropdownList
,
}
from
'../../api/course/index'
//课程下拉
//获取校区列表
import
{
getSchoolDropdown
,
deleteClass
,
getClassDropDownList
}
from
'../../api/school/index'
;
import
{
getStudentAttendanceDayStatistics
}
from
"../../api/stuMan/index"
import
selectTree
from
"../../components/common/select-tree"
;
import
{
openURL
}
from
"quasar"
;
...
...
@@ -175,99 +173,70 @@
},
data
()
{
return
{
currentUrl
:
""
,
columns
:
[{
name
:
"CoverImg"
,
label
:
"课程封面"
,
field
:
"CoverImg"
,
align
:
"left"
},
columns
:
[
{
name
:
"C
ourse
Name"
,
name
:
"C
lass
Name"
,
required
:
true
,
label
:
"
课程名称
"
,
label
:
"
班级
"
,
align
:
"left"
,
field
:
row
=>
row
.
C
ourse
Name
field
:
row
=>
row
.
C
lass
Name
},
{
name
:
"C
at
eName"
,
name
:
"C
ours
eName"
,
required
:
true
,
label
:
"
系列
"
,
label
:
"
课程
"
,
align
:
"left"
,
field
:
row
=>
row
.
C
at
eName
field
:
row
=>
row
.
C
ours
eName
},
{
name
:
"
OriginalPric
e"
,
name
:
"
TeacherNam
e"
,
required
:
true
,
label
:
"
原价
"
,
label
:
"
老师
"
,
align
:
"left"
,
field
:
row
=>
row
.
OriginalPrice
.
toFixed
(
2
)
field
:
row
=>
row
.
TeacherName
},
{
name
:
"
SellPric
e"
,
name
:
"
ClassDat
e"
,
required
:
true
,
label
:
"
售价
"
,
label
:
"
上课日期
"
,
align
:
"left"
,
field
:
row
=>
row
.
SellPrice
.
toFixed
(
2
)
field
:
row
=>
row
.
ClassDate
},
{
name
:
"
PreferentialLis
t"
,
name
:
"
TimeBucke
t"
,
required
:
true
,
label
:
"
优惠政策
"
,
label
:
"
上课时间段
"
,
align
:
"left"
,
field
:
row
=>
row
.
PreferentialLis
t
field
:
row
=>
row
.
TimeBucke
t
},
{
name
:
"
PreferentialListSellCommission
"
,
name
:
"
GuestName
"
,
required
:
true
,
label
:
"
销售佣金
"
,
label
:
"
学生
"
,
align
:
"left"
,
field
:
row
=>
row
.
PreferentialList
field
:
row
=>
row
.
GuestName
},
{
name
:
"
PreferentialListB2BCommission
"
,
name
:
"
CurrentDeductionHours
"
,
required
:
true
,
label
:
"
同行佣金
"
,
label
:
"
课时
"
,
align
:
"left"
,
field
:
row
=>
row
.
PreferentialList
field
:
row
=>
row
.
CurrentDeductionHours
},
{
name
:
"
EducationCommission
"
,
name
:
"
CheckStatus
"
,
required
:
true
,
label
:
"教育同行佣金"
,
align
:
"left"
,
field
:
row
=>
row
.
PreferentialList
},
{
name
:
"ClassHours"
,
label
:
"课时长度"
,
field
:
"ClassHours"
,
align
:
"left"
,
format
:
(
val
,
row
)
=>
`
${
val
}
课时`
},
{
name
:
"CreateByName"
,
label
:
"创建人"
,
field
:
"CreateByName"
,
align
:
"left"
},
{
name
:
"UpdateTimeStr"
,
label
:
"更新时间"
,
field
:
"UpdateTimeStr"
,
align
:
"left"
},
{
name
:
"Status"
,
label
:
"状态"
,
align
:
"left"
,
field
:
"Status"
field
:
row
=>
row
.
CheckStatus
},
{
name
:
"optioned"
,
label
:
"操作"
,
field
:
"CourseId"
align
:
"left"
,
field
:
row
=>
row
.
optioned
}
],
data
:
[],
...
...
@@ -286,115 +255,150 @@
}
],
msg
:
{
StartDate
:
''
,
StartDate
:
'
2021-07-20
'
,
School_Id
:
-
1
,
CouseId
:
''
,
ClassId
:
''
,
CouseId
:
0
,
ClassId
:
0
,
OrderGuestId
:
''
,
GuestName
:
''
,
CheckStatus
:
-
1
,
},
IsShowDialog
:
false
,
//课程分类树形列表
TreeCategoryList
:
[],
returnString
:
[],
//默认值
pageCount
:
0
,
isShowCourseForm
:
false
,
//是否显示课程表单
isShowCoursePriceForm
:
false
,
//是否显示课程价格表单
courseObjOption
:
null
,
//课程对象
isShowPriceEditBtn
:
1
//是否显示价格设置
CourseList
:
[],
//关联课程下拉数据
AllCourseList
:
[],
ClassList
:
[],
//班级下拉
allClassList
:
[],
AttendanceList2
:[{
Name
:
'全部'
,
Id
:
-
1
},{
Name
:
'缺席'
,
Id
:
1
},{
Name
:
'请假'
,
Id
:
2
},],
AttendanceList
:[{
Name
:
'正常'
,
Id
:
0
},{
Name
:
'缺席'
,
Id
:
1
},{
Name
:
'请假'
,
Id
:
2
},],
option
:{
disabledDate
:(
time
)
=>
{
return
time
.
getTime
()
>
Date
.
now
()
}
},
schoolList
:
[],
editMsg
:{
//修改的对象
CheckStatus
:
0
,
StudyNum
:
0
,
},
iseditjurisdiction
:
false
,
};
},
mounted
()
{
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
Name
){
//从订单完成统计跳转过来的带的参数
this
.
msg
.
CourseName
=
decodeURI
(
this
.
$route
.
query
.
Name
)
let
userinfo
=
this
.
getLocalStorage
();
userinfo
.
ActionMenuList
.
map
(
x
=>
{
//判断权限
if
(
x
.
FunctionCode
==
"Student_Attendance"
){
//判断是否有修改状态的权限
this
.
iseditjurisdiction
=
true
;
}
this
.
getCategorytree
();
this
.
currentUrl
=
this
.
$route
.
path
;
this
.
getcourselist
();
})
let
d
=
new
Date
();
let
year
=
d
.
getFullYear
();
let
month
=
d
.
getMonth
()
+
1
;
month
=
month
<
10
?
'0'
+
month
:
month
;
let
day
=
d
.
getDate
();
day
=
day
<
10
?
'0'
+
day
:
day
;
let
today
=
year
+
'-'
+
month
+
'-'
+
day
;
this
.
msg
.
StartDate
=
today
;
this
.
getlist
();
this
.
getSchool
()
this
.
getClass
()
this
.
getCourseList
()
},
methods
:
{
//删除课程
DeleteCourse
(
item
,
status
)
{
let
delMsg
=
{
CourseId
:
item
.
CourseId
,
Status
:
status
};
var
message
=
"是否要删除该课程?"
;
if
(
status
==
0
)
{
message
=
"是否要恢复该课程?"
;
//获取校区列表
getSchool
()
{
getSchoolDropdown
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
var
tempArray
=
res
.
Data
;
if
(
!
tempArray
)
{
tempArray
=
[];
}
tempArray
.
unshift
({
SId
:
-
1
,
SName
:
"不限"
})
this
.
schoolList
=
tempArray
;
}
this
.
$q
.
dialog
({
title
:
'提示信息'
,
message
:
message
,
cancel
:
true
,
persistent
:
true
,
ok
:
"确定"
,
cancel
:
"取消"
,
}).
onOk
(()
=>
{
deleteCourseInfo
(
delMsg
).
then
(
res
=>
{
})
},
//获取课程
getCourseList
()
{
queryCourseDropdownList
({
IsQPrice
:
1
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'删除成功!'
,
position
:
'top'
this
.
CourseList
=
res
.
Data
;
var
obj
=
{
CourseName
:
'不限'
,
CourseId
:
0
}
this
.
CourseList
.
unshift
(
obj
);
this
.
AllCourseList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
CourseList
));
}
})
this
.
getcourselist
();
},
//筛选课程
filterCourse
(
val
,
update
)
{
update
(()
=>
{
if
(
val
===
''
)
{
this
.
CourseList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
AllCourseList
))
}
else
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
res
.
Message
,
position
:
'top'
})
const
needle
=
val
.
toLowerCase
();
this
.
CourseList
=
this
.
AllCourseList
.
filter
(
v
=>
v
.
CourseName
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
);
}
})
}).
onCancel
(()
=>
{
});
},
gotoSub
(
obj
,
routeStr
)
{
var
tempStr
=
"/course/"
+
routeStr
+
"?CourseId="
+
obj
.
CourseId
;
this
.
$router
.
push
({
path
:
tempStr
//获取班级下拉
getClass
()
{
getClassDropDownList
({
CourseId
:
this
.
msg
.
CouseId
,
SchoolId
:
this
.
msg
.
School_Id
,
IsAddDefault
:
0
,
//添加默认选项
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
var
jsonData
=
res
.
Data
;
jsonData
.
unshift
({
ClassId
:
0
,
ClassName
:
"不限"
})
if
(
jsonData
&&
jsonData
.
length
>
0
)
{
this
.
ClassList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));
this
.
allClassList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));;
}
this
.
msg
.
ClassId
=
0
this
.
refreshPage
()
}
});
},
//分类改变
getChild
(
cateObj
)
{
var
tempStr
=
""
;
if
(
cateObj
&&
cateObj
!=
""
)
{
tempStr
=
cateObj
;
//筛选班级
filterClass
(
val
,
update
)
{
update
(()
=>
{
if
(
val
===
''
)
{
this
.
ClassList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
allClassList
))
}
else
{
const
needle
=
val
.
toLowerCase
()
this
.
ClassList
=
this
.
allClassList
.
filter
(
v
=>
v
.
ClassName
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
)
}
this
.
msg
.
QCateIds
=
tempStr
;
this
.
msg
.
pageIndex
=
1
;
this
.
getcourselist
();
},
getCategorytree
()
{
this
.
TreeCategoryList
=
[];
var
qMsg
=
{};
queryCourseCategoryTree
(
qMsg
).
then
(
res
=>
{
this
.
TreeCategoryList
=
res
.
Data
;
});
})
},
//重新查询
resetSearch
()
{
this
.
getcourselist
();
},
//翻页
changePage
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getcourselist
();
this
.
getlist
();
},
//获取菜单分页列表
get
course
list
()
{
getlist
()
{
this
.
loading
=
true
;
queryCoursePage
(
this
.
msg
)
getStudentAttendanceDayStatistics
(
this
.
msg
)
.
then
(
res
=>
{
this
.
loading
=
false
;
this
.
data
=
res
.
Data
.
PageData
;
this
.
pageCount
=
res
.
Data
.
PageCount
;
this
.
data
=
res
.
Data
;
})
.
catch
(()
=>
{
this
.
loading
=
false
;
...
...
@@ -402,36 +406,45 @@
},
//刷新页面
refreshPage
()
{
this
.
isShowCourseForm
=
false
;
this
.
isShowCoursePriceForm
=
false
;
this
.
getcourselist
();
this
.
getlist
();
},
//新增修改课程及价格
EditCourse
(
obj
,
type
)
{
if
(
obj
)
{
this
.
courseObjOption
=
obj
;
}
else
{
this
.
courseObjOption
=
null
;
}
if
(
type
==
1
)
{
this
.
isShowCourseForm
=
true
;
}
else
{
this
.
isShowCoursePriceForm
=
true
;
}
},
//关闭弹窗
closeMenuSaveForm
()
{
this
.
isShowCourseForm
=
false
;
this
.
isShowCoursePriceForm
=
false
;
EditCourse
(
x
,
row
){
console
.
log
(
row
)
this
.
editMsg
.
CheckStatus
=
x
.
CheckStatus
;
this
.
editMsg
.
StudyNum
=
x
.
StudyNum
;
this
.
editMsg
.
ClassDate
=
row
.
ClassDate
;
this
.
editMsg
.
ClassRoomId
=
row
.
ClassRoomId
;
this
.
editMsg
.
ClassTimeId
=
x
.
ClassTimeId
;
this
.
editMsg
.
OrderGuestId
=
x
.
OrderGuestId
;
this
.
editMsg
.
School_Id
=
row
.
School_Id
;
this
.
editMsg
.
TeacherId
=
row
.
TeacherId
;
this
.
editMsg
.
classId
=
row
.
ClassId
;
this
.
IsShowDialog
=
true
},
//跳转至我的课程
goMycourse
(
obj
)
{
var
tempStr
=
window
.
location
.
origin
+
"/#/course/courseinfo?CourseId="
+
obj
.
CourseId
;
// this.$router.push({
// path: tempStr
// });
openURL
(
tempStr
)
},
saveAttendance
(){
//修改出勤状态
let
signMsg
=
[]
signMsg
.
push
(
this
.
editMsg
)
addClassCheck
(
signMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
getlist
();
this
.
IsShowDialog
=
false
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'操作成功'
,
position
:
'top'
})
}
})
},
}
};
...
...
@@ -446,6 +459,5 @@
</
style
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
\ No newline at end of file
src/pages/system/processSet.vue
View file @
798a7380
...
...
@@ -75,10 +75,10 @@
name
:
"5"
,
label
:
"临时上课邀请流程"
},
{
name
:
"6"
,
label
:
"分拆"
}
//
{
//
name: "6",
//
label: "分拆"
//
}
],
tabCheck
:
'1'
,
}
...
...
src/pages/teacher/changeClassManager.vue
View file @
798a7380
...
...
@@ -144,7 +144,7 @@
import
temporaryClassForm
from
'../../components/sale/temporaryClassbill-form'
;
export
default
{
meta
:
{
title
:
"
退课
单据"
title
:
"
业务
单据"
},
components
:
{
backbillForm
,
...
...
src/router/routes.js
View file @
798a7380
...
...
@@ -1051,7 +1051,12 @@ const routes = [{
path
:
"/stuMan/stuList"
,
//学管 学员名单
component
:
()
=>
import
(
"pages/stuMan/stuList"
)
},
{
path
:
"/stuMan/visitorRecord"
,
//学管 访问管理
component
:
()
=>
import
(
"pages/stuMan/visitorRecord"
)
},
],
},
...
...
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