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
5ff46057
Commit
5ff46057
authored
Jul 21, 2021
by
Mac
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
e9b0d5a9
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
458 additions
and
2 deletions
+458
-2
addFinancialDocuments.vue
...ages/financial/financalDocument/addFinancialDocuments.vue
+1
-1
addReceivablesDocuments.vue
...es/financial/financalDocument/addReceivablesDocuments.vue
+1
-1
studentManage.vue
src/pages/stuMan/studentManage.vue
+451
-0
routes.js
src/router/routes.js
+5
-0
No files found.
src/pages/financial/financalDocument/addFinancialDocuments.vue
View file @
5ff46057
...
@@ -686,7 +686,7 @@
...
@@ -686,7 +686,7 @@
<p>
<p>
关联单号:
关联单号:
<span
style=
"border-bottom: 1px solid #111;height: 34px;line-height: 34px;"
>
<span
style=
"border-bottom: 1px solid #111;height: 34px;line-height: 34px;"
>
<
el-input
type=
"text"
v-model=
'msg.RelevanceFrId'
placeholder=
"如:123,234"
onkeyup=
"this.value=this.value.replace(/[^0-9\,]/
,'')"
/>
<
input
type=
"text"
v-model=
'msg.RelevanceFrId'
placeholder=
"如:123,234"
onkeyup=
"this.value=this.value.replace(/[^\d\,]/g
,'')"
/>
</span>
</span>
</p>
</p>
<
template
v-if=
"GetDetail.FrID!=0"
>
<
template
v-if=
"GetDetail.FrID!=0"
>
...
...
src/pages/financial/financalDocument/addReceivablesDocuments.vue
View file @
5ff46057
...
@@ -588,7 +588,7 @@
...
@@ -588,7 +588,7 @@
<p>
<p>
关联单号:
关联单号:
<span
style=
"border-bottom: 1px solid #111;height: 34px;line-height: 34px;"
>
<span
style=
"border-bottom: 1px solid #111;height: 34px;line-height: 34px;"
>
<
el-input
type=
"text"
v-model=
'msg.RelevanceFrId'
placeholder=
"如:123,234"
onkeyup=
"this.value=this.value.replace(/[^0-9\,]/
,'')"
/>
<
input
type=
"text"
v-model=
'msg.RelevanceFrId'
placeholder=
"如:123,234"
onkeyup=
"this.value=this.value.replace(/[^\d\,]/g
,'')"
/>
</span>
</span>
</p>
</p>
</div>
</div>
...
...
src/pages/stuMan/studentManage.vue
0 → 100644
View file @
5ff46057
<
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
@
input=
"resetSearch"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.CourseName"
label=
"课程名称"
@
clear=
"resetSearch"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<select-tree
:treeData=
"TreeCategoryList"
:defaultArray=
"returnString"
nodeKey=
"CateId"
:multiple=
"true"
labelKey=
"CateName"
childrenKey=
"ChildList"
tipText=
"课程系列"
@
getChild=
"getChild"
></select-tree>
</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>
</div>
<div
class=
"page-content"
>
<q-table
:pagination=
"msg"
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
class=
"sticky-tow-column-table sticky-right-column-table"
separator=
"none"
:data=
"data"
:columns=
"columns"
row-key=
"name"
>
<template
v-slot:top=
"props"
>
<div
class=
"col-2 q-table__title"
>
学员管理
</div>
<q-space
/>
</
template
>
<
template
v-slot:body-cell-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"
>
<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>
<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>
</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>
</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-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>
</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-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"
/>
</
template
>
<
template
v-slot:body-cell-optioned=
"props"
>
<q-td
:props=
"props"
>
<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>
</q-td>
</
template
>
</q-table>
</div>
</div>
</template>
<
script
>
import
{
queryCoursePage
,
queryCourseCategoryTree
,
deleteCourseInfo
}
from
"../../api/course/index"
;
import
selectTree
from
"../../components/common/select-tree"
;
import
{
openURL
}
from
"quasar"
;
export
default
{
meta
:
{
title
:
"学员管理"
},
components
:
{
selectTree
,
},
data
()
{
return
{
currentUrl
:
""
,
columns
:
[{
name
:
"CoverImg"
,
label
:
"课程封面"
,
field
:
"CoverImg"
,
align
:
"left"
},
{
name
:
"CourseName"
,
required
:
true
,
label
:
"课程名称"
,
align
:
"left"
,
field
:
row
=>
row
.
CourseName
},
{
name
:
"CateName"
,
required
:
true
,
label
:
"系列"
,
align
:
"left"
,
field
:
row
=>
row
.
CateName
},
{
name
:
"OriginalPrice"
,
required
:
true
,
label
:
"原价"
,
align
:
"left"
,
field
:
row
=>
row
.
OriginalPrice
.
toFixed
(
2
)
},
{
name
:
"SellPrice"
,
required
:
true
,
label
:
"售价"
,
align
:
"left"
,
field
:
row
=>
row
.
SellPrice
.
toFixed
(
2
)
},
{
name
:
"PreferentialList"
,
required
:
true
,
label
:
"优惠政策"
,
align
:
"left"
,
field
:
row
=>
row
.
PreferentialList
},
{
name
:
"PreferentialListSellCommission"
,
required
:
true
,
label
:
"销售佣金"
,
align
:
"left"
,
field
:
row
=>
row
.
PreferentialList
},
{
name
:
"PreferentialListB2BCommission"
,
required
:
true
,
label
:
"同行佣金"
,
align
:
"left"
,
field
:
row
=>
row
.
PreferentialList
},
{
name
:
"EducationCommission"
,
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"
},
{
name
:
"optioned"
,
label
:
"操作"
,
field
:
"CourseId"
}
],
data
:
[],
loading
:
true
,
ShowOpts
:
[{
label
:
"全部"
,
value
:
"-1"
},
{
label
:
"正常"
,
value
:
"0"
},
{
label
:
"删除"
,
value
:
"1"
}
],
msg
:
{
StartDate
:
''
,
School_Id
:
-
1
,
CouseId
:
''
,
ClassId
:
''
,
OrderGuestId
:
''
,
GuestName
:
''
,
},
//课程分类树形列表
TreeCategoryList
:
[],
returnString
:
[],
//默认值
pageCount
:
0
,
isShowCourseForm
:
false
,
//是否显示课程表单
isShowCoursePriceForm
:
false
,
//是否显示课程价格表单
courseObjOption
:
null
,
//课程对象
isShowPriceEditBtn
:
1
//是否显示价格设置
};
},
mounted
()
{
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
Name
){
//从订单完成统计跳转过来的带的参数
this
.
msg
.
CourseName
=
decodeURI
(
this
.
$route
.
query
.
Name
)
}
this
.
getCategorytree
();
this
.
currentUrl
=
this
.
$route
.
path
;
this
.
getcourselist
();
},
methods
:
{
//删除课程
DeleteCourse
(
item
,
status
)
{
let
delMsg
=
{
CourseId
:
item
.
CourseId
,
Status
:
status
};
var
message
=
"是否要删除该课程?"
;
if
(
status
==
0
)
{
message
=
"是否要恢复该课程?"
;
}
this
.
$q
.
dialog
({
title
:
'提示信息'
,
message
:
message
,
cancel
:
true
,
persistent
:
true
,
ok
:
"确定"
,
cancel
:
"取消"
,
}).
onOk
(()
=>
{
deleteCourseInfo
(
delMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'删除成功!'
,
position
:
'top'
})
this
.
getcourselist
();
}
else
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
res
.
Message
,
position
:
'top'
})
}
})
}).
onCancel
(()
=>
{
});
},
gotoSub
(
obj
,
routeStr
)
{
var
tempStr
=
"/course/"
+
routeStr
+
"?CourseId="
+
obj
.
CourseId
;
this
.
$router
.
push
({
path
:
tempStr
});
},
//分类改变
getChild
(
cateObj
)
{
var
tempStr
=
""
;
if
(
cateObj
&&
cateObj
!=
""
)
{
tempStr
=
cateObj
;
}
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
();
},
//获取菜单分页列表
getcourselist
()
{
this
.
loading
=
true
;
queryCoursePage
(
this
.
msg
)
.
then
(
res
=>
{
this
.
loading
=
false
;
this
.
data
=
res
.
Data
.
PageData
;
this
.
pageCount
=
res
.
Data
.
PageCount
;
})
.
catch
(()
=>
{
this
.
loading
=
false
;
});
},
//刷新页面
refreshPage
()
{
this
.
isShowCourseForm
=
false
;
this
.
isShowCoursePriceForm
=
false
;
this
.
getcourselist
();
},
//新增修改课程及价格
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
;
},
//跳转至我的课程
goMycourse
(
obj
)
{
var
tempStr
=
window
.
location
.
origin
+
"/#/course/courseinfo?CourseId="
+
obj
.
CourseId
;
// this.$router.push({
// path: tempStr
// });
openURL
(
tempStr
)
}
}
};
</
script
>
<
style
scoped
>
.border-bottom
{
border-bottom
:
1px
dashed
#EEE
;
padding-bottom
:
5px
;
margin-bottom
:
5px
;
}
</
style
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
\ No newline at end of file
src/router/routes.js
View file @
5ff46057
...
@@ -1037,6 +1037,11 @@ const routes = [{
...
@@ -1037,6 +1037,11 @@ const routes = [{
component
:
()
=>
component
:
()
=>
import
(
"pages/stuMan/classRecord"
)
import
(
"pages/stuMan/classRecord"
)
},
},
{
path
:
"/stuMan/studentManage"
,
//学管 学员管理
component
:
()
=>
import
(
"pages/stuMan/studentManage"
)
},
],
],
},
},
...
...
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