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
3fb561df
Commit
3fb561df
authored
Jul 08, 2022
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
页面修改
parent
5516e5e9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
1396 additions
and
1605 deletions
+1396
-1605
stulist.vue
src/components/school/student/stulist.vue
+658
-812
index.vue
src/components/todolist/index.vue
+0
-1
payee.vue
src/components/todolist/payee.vue
+70
-99
Work.vue
src/pages/Work.vue
+0
-1
Scheduling.vue
src/pages/classroom/Scheduling.vue
+187
-231
marketStatistics.vue
src/pages/financial/market/marketStatistics.vue
+450
-447
classPlan.vue
src/pages/stuMan/classPlan.vue
+1
-1
classRecord.vue
src/pages/stuMan/classRecord.vue
+26
-10
assessmentType.vue
src/pages/teacher/assessmentType.vue
+4
-3
No files found.
src/components/school/student/stulist.vue
View file @
3fb561df
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
.stuList
.q-table__bottom
{
.stuList
.q-table__bottom
{
min-height
:
0
;
min-height
:
0
;
}
}
.stulistNum
{
.stulistNum
{
display
:
inline-block
;
display
:
inline-block
;
width
:
25px
;
width
:
25px
;
height
:
25px
;
height
:
25px
;
text-align
:
center
;
text-align
:
center
;
line-height
:
23px
;
line-height
:
23px
;
border
:
1px
solid
#2961fe
;
border
:
1px
solid
#2961fe
;
border-radius
:
50%
;
border-radius
:
50%
;
cursor
:
pointer
;
cursor
:
pointer
;
color
:
#2961fe
;
color
:
#2961fe
;
}
}
.stuListTable
{
.stuListTable
{
width
:
200px
;
width
:
200px
;
text-align
:
center
;
text-align
:
center
;
}
}
.stuListTable
tr
td
{
.stuListTable
tr
td
{
height
:
40px
;
height
:
40px
;
}
}
.stuListTable
tr
th
{
.stuListTable
tr
th
{
height
:
40px
;
height
:
40px
;
background-color
:
rgb
(
238
,
238
,
239
);
background-color
:
rgb
(
238
,
238
,
239
);
}
}
.stulistNumber
{
.stulistNumber
{
display
:
inline-block
;
display
:
inline-block
;
width
:
25px
;
width
:
25px
;
height
:
25px
;
height
:
25px
;
text-align
:
center
;
text-align
:
center
;
line-height
:
22px
;
line-height
:
22px
;
border
:
1px
solid
#2961fe
;
border
:
1px
solid
#2961fe
;
border-radius
:
50%
;
border-radius
:
50%
;
cursor
:
pointer
;
cursor
:
pointer
;
color
:
#2961fe
;
color
:
#2961fe
;
}
}
.OCourseTable
{
.OCourseTable
{
width
:
600px
;
width
:
600px
;
text-align
:
center
;
text-align
:
center
;
}
}
.OCourseTable
tr
td
{
.OCourseTable
tr
td
{
height
:
40px
;
height
:
40px
;
}
}
.OCourseTable
tr
th
{
.OCourseTable
tr
th
{
height
:
40px
;
height
:
40px
;
background-color
:
rgb
(
238
,
238
,
239
);
background-color
:
rgb
(
238
,
238
,
239
);
}
}
</
style
>
</
style
>
<
template
>
<
template
>
<div
class=
"stuList"
:style=
"
{ height: height }">
<div
class=
"stuList"
:style=
"
{ height: height }">
<q-table
<q-table
:pagination=
"pageMsg"
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
:pagination=
"pageMsg"
:selection=
"noSelect ? 'none' : pushMode ? 'multiple' : 'single'"
:selected
.
sync=
"selection"
:loading=
"loading"
:style=
"
{ height: height }" class="sticky-right-column-table sticky-tow-column-table"
no-data-label=
"暂无相关数据"
:class="{ 'my-sticky-header-table': height != 'unset' }" separator="none" :data="dataList" :columns="columns"
flat
row-key="StuId" hide-bottom>
:selection=
"noSelect ? 'none' : pushMode ? 'multiple' : 'single'"
:selected
.
sync=
"selection"
:style=
"
{ height: height }"
class="sticky-right-column-table sticky-tow-column-table"
:class="{ 'my-sticky-header-table': height != 'unset' }"
separator="none"
:data="dataList"
:columns="columns"
row-key="StuId"
hide-bottom
>
<template
v-if=
"showHeader"
v-slot:top
>
<template
v-if=
"showHeader"
v-slot:top
>
<div
class=
"col-2 q-table__title"
>
学员信息
</div>
<div
class=
"col-2 q-table__title"
>
学员信息
</div>
<q-space
/>
<q-space
/>
<div
class=
"page-option"
v-if=
"!pushMode"
>
<div
class=
"page-option"
v-if=
"!pushMode"
>
<q-btn
<q-btn
color=
"accent"
v-if=
"IsTrasferAll()"
outline
class=
"q-mr-md"
size=
"sm"
icon=
"swap_horiz"
label=
"批量转交"
color=
"accent"
@
click=
"pushMode = true"
/>
v-if=
"IsTrasferAll()"
<q-btn
color=
"accent"
outline
class=
"q-mr-md"
size=
"sm"
icon=
"swap_horiz"
label=
"推送课程顾问"
outline
v-if=
"userInfo.IsCourseConsultant == 0"
@
click=
"pushMode = true"
/>
class=
"q-mr-md"
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"swap_horiz"
label=
"转订单"
size=
"sm"
:disable=
"selection.length === 0"
@
click=
"transferOrder"
/>
icon=
"swap_horiz"
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"swap_horiz"
label=
"转留学"
label=
"批量转交"
:disable=
"selection.length === 0"
@
click=
"transferAbroad"
/>
@
click=
"pushMode = true"
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"add"
label=
"新增学员"
@
click=
"EditStudent(null)"
/>
/>
<q-btn
v-if=
"authObj && authObj.isShowDownload"
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"download"
<q-btn
label=
"下载"
@
click=
"downloadStudent"
/>
color=
"accent"
outline
class=
"q-mr-md"
size=
"sm"
icon=
"swap_horiz"
label=
"推送课程顾问"
v-if=
"userInfo.IsCourseConsultant == 0"
@
click=
"pushMode = true"
/>
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"swap_horiz"
label=
"转订单"
:disable=
"selection.length === 0"
@
click=
"transferOrder"
/>
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"swap_horiz"
label=
"转留学"
:disable=
"selection.length === 0"
@
click=
"transferAbroad"
/>
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"add"
label=
"新增学员"
@
click=
"EditStudent(null)"
/>
<q-btn
v-if=
"authObj && authObj.isShowDownload"
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"download"
label=
"下载"
@
click=
"downloadStudent"
/>
</div>
</div>
<div
class=
"page-option"
v-if=
"pushMode"
>
<div
class=
"page-option"
v-if=
"pushMode"
>
<q-btn
<q-btn
color=
"accent"
unelevated
class=
"q-mr-md"
size=
"sm"
icon=
"swap_horiz"
label=
"转交"
color=
"accent"
@
click=
"isShowTrans = true"
>
unelevated
class=
"q-mr-md"
size=
"sm"
icon=
"swap_horiz"
label=
"转交"
@
click=
"isShowTrans = true"
>
<q-popup-proxy
:offset=
"[10, 10]"
>
<q-popup-proxy
:offset=
"[10, 10]"
>
<q-banner
v-if=
"isShowTrans"
>
<q-banner
v-if=
"isShowTrans"
>
<q-select
<q-select
style=
"margin-top:20px;"
filled
v-model=
"transMsg.CreateBy"
@
filter=
"filterEmployee"
use-input
style=
"margin-top:20px;"
:options=
"myEmployeeList"
option-label=
"EmployeeName"
option-value=
"Id"
emit-value
map-options
/>
filled
<q-btn
label=
"保存"
style=
"float:right;margin-top:15px"
color=
"accent q-mb-lg"
size=
"sm"
v-model=
"transMsg.CreateBy"
@
click=
"saveTransForm"
/>
@
filter=
"filterEmployee"
use-input
:options=
"myEmployeeList"
option-label=
"EmployeeName"
option-value=
"Id"
emit-value
map-options
/>
<q-btn
label=
"保存"
style=
"float:right;margin-top:15px"
color=
"accent q-mb-lg"
size=
"sm"
@
click=
"saveTransForm"
/>
</q-banner>
</q-banner>
</q-popup-proxy>
</q-popup-proxy>
</q-btn>
</q-btn>
<q-btn
<q-btn
color=
"accent"
unelevated
class=
"q-mr-md"
size=
"sm"
icon=
"swap_horiz"
label=
"立即推送"
:loading=
"pushing"
color=
"accent"
@
click=
"assistBatchHandler"
/>
unelevated
<q-btn
color=
"accent"
outline
size=
"sm"
label=
"退出"
:disable=
"pushing"
@
click=
"
class=
"q-mr-md"
size=
"sm"
icon=
"swap_horiz"
label=
"立即推送"
:loading=
"pushing"
@
click=
"assistBatchHandler"
/>
<q-btn
color=
"accent"
outline
size=
"sm"
label=
"退出"
:disable=
"pushing"
@
click=
"
pushMode = false;
pushMode = false;
selection = [];
selection = [];
"
"
/>
/>
</div>
</div>
</
template
>
</
template
>
<
template
v-slot:body-cell-StuIcon=
"props"
>
<
template
v-slot:body-cell-StuIcon=
"props"
>
...
@@ -195,32 +103,20 @@
...
@@ -195,32 +103,20 @@
<q-avatar
size=
"md"
v-if=
"props.value"
>
<q-avatar
size=
"md"
v-if=
"props.value"
>
<img
:src=
"props.value"
/>
<img
:src=
"props.value"
/>
</q-avatar>
</q-avatar>
<q-avatar
<q-avatar
size=
"md"
color=
"teal-10"
text-color=
"white"
v-if=
"!props.value"
>
size=
"md"
{{
props
.
row
.
StuName
.
substring
(
0
,
1
)
}}
</q-avatar>
color=
"teal-10"
text-color=
"white"
v-if=
"!props.value"
>
{{
props
.
row
.
StuName
.
substring
(
0
,
1
)
}}
</q-avatar
>
</q-td>
</q-td>
</
template
>
</
template
>
<
template
v-slot:body-cell-StuName=
"props"
>
<
template
v-slot:body-cell-StuName=
"props"
>
<q-td
:props=
"props"
>
<q-td
:props=
"props"
>
<div
<div
class=
"text-blue cursor-pointer"
@
click=
"getStuRight(props.row, 1)"
>
class=
"text-blue cursor-pointer"
@
click=
"getStuRight(props.row, 1)"
>
{{
props
.
value
}}
{{
props
.
value
}}
</div>
</div>
</q-td>
</q-td>
</
template
>
</
template
>
<
template
v-slot:body-cell-StuSex=
"props"
>
<
template
v-slot:body-cell-StuSex=
"props"
>
<q-td
:props=
"props"
>
<q-td
:props=
"props"
>
<q-badge
<q-badge
:color=
"props.value == 1 ? 'negative' : 'primary'"
:label=
"props.value == 1 ? '女' : '男'"
/>
:color=
"props.value == 1 ? 'negative' : 'primary'"
:label=
"props.value == 1 ? '女' : '男'"
/>
</q-td>
</q-td>
</
template
>
</
template
>
<
template
v-slot:body-cell-CreateTypeStr=
"props"
>
<
template
v-slot:body-cell-CreateTypeStr=
"props"
>
...
@@ -236,9 +132,7 @@
...
@@ -236,9 +132,7 @@
<
template
v-slot:body-cell-StuSourceIdName=
"props"
>
<
template
v-slot:body-cell-StuSourceIdName=
"props"
>
<q-td
:props=
"props"
>
<q-td
:props=
"props"
>
<div
v-if=
"IsShowStuSourceIdName(props.row)"
>
<div
v-if=
"IsShowStuSourceIdName(props.row)"
>
<span
v-if=
"props.row.CreateType == 2 && props.row.EnterpriseName"
<span
v-if=
"props.row.CreateType == 2 && props.row.EnterpriseName"
>
{{
props
.
row
.
EnterpriseName
}}
:
</span>
>
{{
props
.
row
.
EnterpriseName
}}
:
</span
>
{{
props
.
row
.
StuSourceIdName
}}
{{
props
.
row
.
StuSourceIdName
}}
</div>
</div>
<div
v-else
>
<div
v-else
>
...
@@ -268,21 +162,15 @@
...
@@ -268,21 +162,15 @@
{{
props
.
row
.
AdvisorList
.
length
}}
{{
props
.
row
.
AdvisorList
.
length
}}
<q-popup-proxy>
<q-popup-proxy>
<q-banner>
<q-banner>
<table
<table
class=
"OCourseTable"
style=
"border-collapse:collapse;"
>
class=
"OCourseTable"
style=
"border-collapse:collapse;"
>
<tr>
<tr>
<th>
跟进状态
</th>
<th>
跟进状态
</th>
<th>
跟进日期
</th>
<th>
跟进日期
</th>
<th>
跟进比例
</th>
<th>
跟进比例
</th>
<th>
跟进备注
</th>
<th>
跟进备注
</th>
</tr>
</tr>
<tr
<tr
v-for=
"(sItem, sIndex) in props.row.AdvisorList"
style=
"border-bottom:1px dashed #d1d1d1;"
v-for=
"(sItem, sIndex) in props.row.AdvisorList"
:key=
"sIndex"
>
style=
"border-bottom:1px dashed #d1d1d1;"
:key=
"sIndex"
>
<td>
{{
sItem
.
AdvisorStatusName
}}
</td>
<td>
{{
sItem
.
AdvisorStatusName
}}
</td>
<td>
{{
sItem
.
AdvisorDate
}}
</td>
<td>
{{
sItem
.
AdvisorDate
}}
</td>
<td>
{{
sItem
.
AdvisorRate
}}
</td>
<td>
{{
sItem
.
AdvisorRate
}}
</td>
...
@@ -305,21 +193,10 @@
...
@@ -305,21 +193,10 @@
<q-td
:props=
"props"
v-html=
"getCurseManager(props.row)"
></q-td>
<q-td
:props=
"props"
v-html=
"getCurseManager(props.row)"
></q-td>
</
template
>
</
template
>
<
template
v-slot:body-cell-OrderCount=
"props"
>
<
template
v-slot:body-cell-OrderCount=
"props"
>
<q-td
<q-td
:props=
"props"
v-if=
"!props.row.OrderCount || props.row.OrderCount == 0"
class=
"text-grey-4"
>
未报名
</q-td>
:props=
"props"
<q-td
:props=
"props"
v-if=
"props.row.OrderCount > 0"
class=
"bg-negative text-white"
v-if=
"!props.row.OrderCount || props.row.OrderCount == 0"
style=
"cursor:pointer;text-decoration:underline;"
@
click=
"getStuRight(props.row, 3)"
>
class=
"text-grey-4"
已报名
{{
props
.
row
.
OrderCount
}}
单
</q-td>
>
未报名
</q-td
>
<q-td
:props=
"props"
v-if=
"props.row.OrderCount > 0"
class=
"bg-negative text-white"
style=
"cursor:pointer;text-decoration:underline;"
@
click=
"getStuRight(props.row, 3)"
>
已报名
{{
props
.
row
.
OrderCount
}}
单
</q-td
>
</
template
>
</
template
>
<
template
v-slot:body-cell-TeacherManager=
"props"
>
<
template
v-slot:body-cell-TeacherManager=
"props"
>
<q-td
:props=
"props"
v-html=
"getTeacherManager(props.row)"
></q-td>
<q-td
:props=
"props"
v-html=
"getTeacherManager(props.row)"
></q-td>
...
@@ -337,21 +214,14 @@
...
@@ -337,21 +214,14 @@
<q-popup-proxy>
<q-popup-proxy>
<q-banner>
<q-banner>
<div
style=
"max-height:600px;overflow-y:auto;"
>
<div
style=
"max-height:600px;overflow-y:auto;"
>
<table
<table
class=
"stuListTable"
style=
"border-collapse:collapse;"
>
class=
"stuListTable"
style=
"border-collapse:collapse;"
>
<tr>
<tr>
<th>
角色
</th>
<th>
角色
</th>
<th>
协同人
</th>
<th>
协同人
</th>
</tr>
</tr>
<tr
<tr
v-for=
"(sItem, sIndex) in assistListFormat[
v-for=
"(sItem, sIndex) in assistListFormat[
props.pageIndex
props.pageIndex
]"
]"
style=
"border-bottom:1px dashed #d1d1d1;"
:key=
"sIndex"
>
style=
"border-bottom:1px dashed #d1d1d1;"
:key=
"sIndex"
>
<td>
{{
sItem
.
AssistTypeName
}}
</td>
<td>
{{
sItem
.
AssistTypeName
}}
</td>
<td>
{{
sItem
.
AssistName
}}
</td>
<td>
{{
sItem
.
AssistName
}}
</td>
</tr>
</tr>
...
@@ -368,384 +238,430 @@
...
@@ -368,384 +238,430 @@
</q-td>
</q-td>
</template>
</template>
</q-table>
</q-table>
<student-form
<student-form
v-if=
"isShowStuForm"
:save-obj=
"stuOption"
@
close=
"closeStuForm"
@
success=
"refreshStuList"
>
v-if=
"isShowStuForm"
:save-obj=
"stuOption"
@
close=
"closeStuForm"
@
success=
"refreshStuList"
>
</student-form>
</student-form>
<studentRight-form
<studentRight-form
v-if=
"isShowStuRight"
:isJudgeTrans=
"isJudgeTrans"
:BelongType=
"BelongType"
v-if=
"isShowStuRight"
:checkType=
"checkType"
:save-obj=
"stuOption"
@
close=
"closeStuForm"
@
success=
"refreshStuList"
:isJudgeTrans=
"isJudgeTrans"
@
reload=
"referDataHandler"
>
:BelongType=
"BelongType"
:checkType=
"checkType"
:save-obj=
"stuOption"
@
close=
"closeStuForm"
@
success=
"refreshStuList"
@
reload=
"referDataHandler"
>
</studentRight-form>
</studentRight-form>
<studentAdd-form
<studentAdd-form
v-if=
"isShowAdd"
:save-obj=
"stuOption"
@
close=
"closeStuForm"
@
success=
"refreshStuList"
>
v-if=
"isShowAdd"
:save-obj=
"stuOption"
@
close=
"closeStuForm"
@
success=
"refreshStuList"
>
</studentAdd-form>
</studentAdd-form>
<transfer-order
<transfer-order
v-if=
"isShowTransfer"
:select=
"selection"
@
close=
"closeStuForm"
@
success=
"refreshStuList"
>
v-if=
"isShowTransfer"
:select=
"selection"
@
close=
"closeStuForm"
@
success=
"refreshStuList"
>
</transfer-order>
</transfer-order>
<abroad-form
<abroad-form
v-if=
"isShowAbroad"
:select=
"selection"
@
close=
"closeStuForm"
@
success=
"refreshStuList"
></abroad-form>
v-if=
"isShowAbroad"
:select=
"selection"
@
close=
"closeStuForm"
@
success=
"refreshStuList"
></abroad-form>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
studentForm
from
"./student-form"
;
import
studentForm
from
"./student-form"
;
import
studentRightForm
from
"./studentRight-form"
;
import
studentRightForm
from
"./studentRight-form"
;
import
studentAddForm
from
"./studentAdd-form"
;
import
studentAddForm
from
"./studentAdd-form"
;
import
transferOrder
from
"./transfer-order"
;
import
transferOrder
from
"./transfer-order"
;
import
abroadForm
from
"./abroad-form"
;
import
abroadForm
from
"./abroad-form"
;
import
{
mapGetters
}
from
"vuex"
;
import
{
import
{
mapGetters
SetStudentAssistBatch
,
}
from
"vuex"
;
BatchForwardStudent
import
{
}
from
"../../../api/sale/sale"
;
SetStudentAssistBatch
,
import
{
EduDownLoad
}
from
"../../../api/common/common"
;
BatchForwardStudent
import
{
queryEmployee
}
from
"../../../api/users/user"
;
}
from
"../../../api/sale/sale"
;
import
{
EduDownLoad
}
from
"../../../api/common/common"
;
import
{
queryEmployee
}
from
"../../../api/users/user"
;
export
default
{
export
default
{
props
:
{
props
:
{
//数据列表
//数据列表
dataList
:
{
dataList
:
{
type
:
Array
,
type
:
Array
,
default
:
null
default
:
null
},
//是否显示转交按钮
isJudgeTrans
:
{
type
:
Number
,
default
:
null
},
loading
:
{
type
:
Boolean
,
default
:
false
},
//权限验证
authObj
:
{
type
:
Object
,
default
:
null
},
//查询参数
queryMsg
:
{
type
:
Object
,
default
:
null
},
showHeader
:
{
type
:
Boolean
,
default
:
true
},
height
:
{
type
:
String
,
default
:
"unset"
},
noSelect
:
{
type
:
Boolean
,
default
:
false
}
},
},
//是否显示转交按钮
components
:
{
isJudgeTrans
:
{
studentForm
,
type
:
Number
,
studentRightForm
,
default
:
null
studentAddForm
,
transferOrder
,
abroadForm
},
},
loading
:
{
data
()
{
type
:
Boolean
,
return
{
default
:
false
columns
:
[{
name
:
"StuIcon"
,
label
:
""
,
field
:
"StuIcon"
,
align
:
"left"
},
{
name
:
"StuName"
,
required
:
true
,
label
:
"昵称"
,
align
:
"left"
,
field
:
row
=>
row
.
StuName
},
{
name
:
"CurseManager"
,
label
:
"课程顾问"
,
align
:
"left"
},
{
name
:
"TeacherManager"
,
label
:
"协助老师"
,
align
:
"left"
},
{
name
:
"OrderCount"
,
label
:
"是否报名"
,
align
:
"left"
},
{
name
:
"VisitCount"
,
label
:
"到访次数"
,
field
:
"VisitCount"
,
align
:
"left"
},
{
name
:
"TrialLessonCount"
,
label
:
"试听次数"
,
field
:
"TrialLessonCount"
,
align
:
"left"
},
{
name
:
"StuSex"
,
label
:
"性别"
,
field
:
"StuSex"
,
align
:
"left"
},
{
name
:
"StuTel"
,
label
:
"电话"
,
field
:
"StuTel"
,
align
:
"left"
},
{
name
:
"QQ"
,
label
:
"QQ"
,
field
:
"QQ"
,
align
:
"left"
},
{
name
:
"WeChatNo"
,
label
:
"微信"
,
field
:
"WeChatNo"
,
align
:
"left"
},
{
name
:
"StuTypeName"
,
label
:
"客户类型"
,
field
:
"StuTypeName"
,
align
:
"left"
},
{
name
:
"StuStageName"
,
label
:
"客户阶段"
,
field
:
"StuStageName"
,
align
:
"left"
},
{
name
:
"StuNeedsName"
,
label
:
"客户需求"
,
field
:
"StuNeedsName"
,
align
:
"left"
},
{
name
:
"AdvisorExpectDate"
,
label
:
"期望达成协议日期"
,
field
:
"AdvisorExpectDate"
,
align
:
"left"
},
{
name
:
"AdvisorStatusName"
,
label
:
"目前状态"
,
field
:
"AdvisorStatusName"
,
align
:
"left"
},
{
name
:
"AdvisorWinRate"
,
label
:
"胜率"
,
field
:
"AdvisorWinRate"
,
align
:
"left"
},
{
name
:
"AdvisorList"
,
label
:
"跟踪记录"
,
field
:
"AdvisorList"
,
align
:
"left"
},
{
name
:
"StuProfession"
,
label
:
"职业"
,
field
:
"StuProfession"
,
align
:
"left"
},
{
name
:
"StuEducationName"
,
label
:
"学历"
,
field
:
"StuEducationName"
,
align
:
"left"
},
{
name
:
"StuPurposeName"
,
label
:
"目的"
,
field
:
"StuPurposeName"
,
align
:
"left"
},
{
name
:
"AssistList"
,
label
:
"其他服务人员"
,
align
:
"left"
,
field
:
"AssistList"
},
{
name
:
"CreateTypeStr"
,
label
:
"客户来源"
,
field
:
"CreateTypeStr"
,
align
:
"left"
},
{
name
:
"StuSourceIdName"
,
label
:
"来源关联人"
,
field
:
"StuSourceIdName"
,
align
:
"left"
},
{
name
:
"StuChannelName"
,
label
:
"收客渠道"
,
field
:
"StuChannelName"
,
align
:
"left"
},
{
name
:
"CreateTimeStr"
,
label
:
"创建时间"
,
field
:
"CreateTimeStr"
,
align
:
"left"
},
{
name
:
"CreateByName"
,
label
:
"负责人"
,
align
:
"left"
,
field
:
"CreateByName"
}
],
pageMsg
:
{
rowsPerPage
:
12
},
isShowStuForm
:
false
,
resetLoading
:
false
,
isShowStuRight
:
false
,
stuOption
:
null
,
isShowAdd
:
false
,
selection
:
[],
isShowTransfer
:
false
,
//是否显示转订单弹窗
BelongType
:
1
,
pushMode
:
false
,
//是否显示推送按钮
pushing
:
false
,
assistListFormat
:
[],
checkType
:
1
,
//打开右侧弹窗类型
isShowAbroad
:
false
,
//是否显示转留学就业订单弹窗
userInfo
:
{},
//当前登录人员
isShowTrans
:
false
,
transMsg
:
{
StuIds
:
""
,
CreateBy
:
""
},
//员工列表
employeeList
:
[],
myEmployeeList
:
[]
};
},
},
//权限验证
watch
:
{
authObj
:
{
dataList
:
{
type
:
Object
,
handler
(
val
)
{
default
:
null
this
.
selection
=
[];
this
.
formatAssistList
();
},
deep
:
true
}
},
},
//查询参数
created
()
{
queryMsg
:
{
this
.
userInfo
=
this
.
getLocalStorage
();
type
:
Object
,
this
.
formatAssistList
();
default
:
null
},
},
showHeader
:
{
mounted
()
{
type
:
Boolean
,
this
.
getEmployeeList
();
default
:
true
},
},
height
:
{
computed
:
{
type
:
String
,
...
mapGetters
([
"logo"
,
"name"
])
default
:
"unset"
},
},
noSelect
:
{
methods
:
{
type
:
Boolean
,
//是否有查看客户来源和来源关联人权限
default
:
false
IsShowStuSourceIdName
(
item
)
{
}
var
isHaveAuth
=
false
;
},
if
(
components
:
{
this
.
userInfo
&&
studentForm
,
this
.
userInfo
.
ActionMenuList
&&
studentRightForm
,
this
.
userInfo
.
ActionMenuList
.
length
>
0
studentAddForm
,
)
{
transferOrder
,
this
.
userInfo
.
ActionMenuList
.
forEach
(
x
=>
{
abroadForm
if
(
x
.
FunctionCode
==
"Look_StuSourceId"
)
{
},
isHaveAuth
=
true
;
data
()
{
}
return
{
});
columns
:
[
}
{
if
(
item
.
CreateBy
==
this
.
userInfo
.
Id
||
isHaveAuth
)
{
name
:
"StuIcon"
,
return
true
;
label
:
""
,
}
else
{
field
:
"StuIcon"
,
return
false
;
align
:
"left"
},
{
name
:
"StuName"
,
required
:
true
,
label
:
"昵称"
,
align
:
"left"
,
field
:
row
=>
row
.
StuName
},
{
name
:
"CurseManager"
,
label
:
"课程顾问"
,
align
:
"left"
},
{
name
:
"TeacherManager"
,
label
:
"协助老师"
,
align
:
"left"
},
{
name
:
"OrderCount"
,
label
:
"是否报名"
,
align
:
"left"
},
{
name
:
"VisitCount"
,
label
:
"到访次数"
,
field
:
"VisitCount"
,
align
:
"left"
},
{
name
:
"TrialLessonCount"
,
label
:
"试听次数"
,
field
:
"TrialLessonCount"
,
align
:
"left"
},
{
name
:
"StuSex"
,
label
:
"性别"
,
field
:
"StuSex"
,
align
:
"left"
},
{
name
:
"StuTel"
,
label
:
"电话"
,
field
:
"StuTel"
,
align
:
"left"
},
{
name
:
"QQ"
,
label
:
"QQ"
,
field
:
"QQ"
,
align
:
"left"
},
{
name
:
"WeChatNo"
,
label
:
"微信"
,
field
:
"WeChatNo"
,
align
:
"left"
},
{
name
:
"StuTypeName"
,
label
:
"客户类型"
,
field
:
"StuTypeName"
,
align
:
"left"
},
{
name
:
"StuStageName"
,
label
:
"客户阶段"
,
field
:
"StuStageName"
,
align
:
"left"
},
{
name
:
"StuNeedsName"
,
label
:
"客户需求"
,
field
:
"StuNeedsName"
,
align
:
"left"
},
{
name
:
"AdvisorExpectDate"
,
label
:
"期望达成协议日期"
,
field
:
"AdvisorExpectDate"
,
align
:
"left"
},
{
name
:
"AdvisorStatusName"
,
label
:
"目前状态"
,
field
:
"AdvisorStatusName"
,
align
:
"left"
},
{
name
:
"AdvisorWinRate"
,
label
:
"胜率"
,
field
:
"AdvisorWinRate"
,
align
:
"left"
},
{
name
:
"AdvisorList"
,
label
:
"跟踪记录"
,
field
:
"AdvisorList"
,
align
:
"left"
},
{
name
:
"StuProfession"
,
label
:
"职业"
,
field
:
"StuProfession"
,
align
:
"left"
},
{
name
:
"StuEducationName"
,
label
:
"学历"
,
field
:
"StuEducationName"
,
align
:
"left"
},
{
name
:
"StuPurposeName"
,
label
:
"目的"
,
field
:
"StuPurposeName"
,
align
:
"left"
},
{
name
:
"AssistList"
,
label
:
"其他服务人员"
,
align
:
"left"
,
field
:
"AssistList"
},
{
name
:
"CreateTypeStr"
,
label
:
"客户来源"
,
field
:
"CreateTypeStr"
,
align
:
"left"
},
{
name
:
"StuSourceIdName"
,
label
:
"来源关联人"
,
field
:
"StuSourceIdName"
,
align
:
"left"
},
{
name
:
"StuChannelName"
,
label
:
"收客渠道"
,
field
:
"StuChannelName"
,
align
:
"left"
},
{
name
:
"CreateTimeStr"
,
label
:
"创建时间"
,
field
:
"CreateTimeStr"
,
align
:
"left"
},
{
name
:
"CreateByName"
,
label
:
"负责人"
,
align
:
"left"
,
field
:
"CreateByName"
}
}
],
pageMsg
:
{
rowsPerPage
:
12
},
},
isShowStuForm
:
false
,
//是否有批量转移权限
resetLoading
:
false
,
IsTrasferAll
()
{
isShowStuRight
:
false
,
var
isHaveAuth
=
false
;
stuOption
:
null
,
if
(
isShowAdd
:
false
,
this
.
userInfo
&&
selection
:
[],
this
.
userInfo
.
ActionMenuList
&&
isShowTransfer
:
false
,
//是否显示转订单弹窗
this
.
userInfo
.
ActionMenuList
.
length
>
0
BelongType
:
1
,
)
{
pushMode
:
false
,
//是否显示推送按钮
this
.
userInfo
.
ActionMenuList
.
forEach
(
x
=>
{
pushing
:
false
,
if
(
x
.
FunctionCode
==
"IsTranserAll"
)
{
assistListFormat
:
[],
isHaveAuth
=
true
;
checkType
:
1
,
//打开右侧弹窗类型
}
isShowAbroad
:
false
,
//是否显示转留学就业订单弹窗
});
userInfo
:
{},
//当前登录人员
}
isShowTrans
:
false
,
return
isHaveAuth
;
transMsg
:
{
StuIds
:
""
,
CreateBy
:
""
},
},
//员工列表
//下载文件
employeeList
:
[],
downloadStudent
()
{
myEmployeeList
:
[]
var
msg
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
queryMsg
));
};
EduDownLoad
(
"/User/DownLoadStudent"
,
msg
,
"客户资料.xls"
);
},
watch
:
{
dataList
:
{
handler
(
val
)
{
this
.
selection
=
[];
this
.
formatAssistList
();
},
},
deep
:
true
//服务人员转化
}
formatAssistList
()
{
},
this
.
assistListFormat
=
[];
created
()
{
this
.
dataList
.
forEach
(
x
=>
{
this
.
userInfo
=
this
.
getLocalStorage
();
let
tempArr
=
[];
this
.
formatAssistList
();
if
(
x
.
AssistList
&&
x
.
AssistList
.
length
>
0
)
{
},
x
.
AssistList
.
forEach
(
y
=>
{
mounted
()
{
if
(
y
.
AssistType
!=
2
&&
y
.
AssistType
!=
4
)
{
this
.
getEmployeeList
();
tempArr
.
push
(
y
);
},
}
computed
:
{
});
...
mapGetters
([
"logo"
,
"name"
])
},
methods
:
{
//是否有查看客户来源和来源关联人权限
IsShowStuSourceIdName
(
item
)
{
var
isHaveAuth
=
false
;
if
(
this
.
userInfo
&&
this
.
userInfo
.
ActionMenuList
&&
this
.
userInfo
.
ActionMenuList
.
length
>
0
)
{
this
.
userInfo
.
ActionMenuList
.
forEach
(
x
=>
{
if
(
x
.
FunctionCode
==
"Look_StuSourceId"
)
{
isHaveAuth
=
true
;
}
}
this
.
assistListFormat
.
push
(
tempArr
);
});
});
}
},
if
(
item
.
CreateBy
==
this
.
userInfo
.
Id
||
isHaveAuth
)
{
//创建账号
return
true
;
createAccount
(
id
)
{
}
else
{
let
that
=
this
;
return
false
;
createStudentAccount
({
}
StuId
:
id
},
}).
then
(
res
=>
{
//是否有批量转移权限
that
.
$q
IsTrasferAll
()
{
.
dialog
({
var
isHaveAuth
=
false
;
title
:
"创建账号"
,
if
(
message
:
res
.
Message
,
this
.
userInfo
&&
persistent
:
true
,
this
.
userInfo
.
ActionMenuList
&&
ok
:
{
this
.
userInfo
.
ActionMenuList
.
length
>
0
label
:
"确认"
,
)
{
flat
:
true
,
this
.
userInfo
.
ActionMenuList
.
forEach
(
x
=>
{
focus
:
true
if
(
x
.
FunctionCode
==
"IsTranserAll"
)
{
}
isHaveAuth
=
true
;
})
}
.
onOk
(()
=>
{
that
.
getStudent
();
})
.
onCancel
(()
=>
{
that
.
getStudent
();
});
});
});
}
},
return
isHaveAuth
;
resetPw
(
id
)
{
},
let
that
=
this
;
//下载文件
this
.
$q
downloadStudent
()
{
.
dialog
({
var
msg
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
queryMsg
));
title
:
"重置密码"
,
EduDownLoad
(
"/User/DownLoadStudent"
,
msg
,
"客户资料.xls"
);
message
:
"你正在进行重置密码行为,是否确认执行"
,
},
persistent
:
true
,
//服务人员转化
cancel
:
{
formatAssistList
()
{
label
:
"取消"
,
this
.
assistListFormat
=
[];
flat
:
true
this
.
dataList
.
forEach
(
x
=>
{
},
let
tempArr
=
[];
ok
:
{
if
(
x
.
AssistList
&&
x
.
AssistList
.
length
>
0
)
{
label
:
"确认重置"
,
x
.
AssistList
.
forEach
(
y
=>
{
flat
:
true
,
if
(
y
.
AssistType
!=
2
&&
y
.
AssistType
!=
4
)
{
focus
:
true
tempArr
.
push
(
y
);
}
}
})
.
onOk
(()
=>
{
that
.
resetLoading
=
true
;
resetPassword
({
AccountType
:
4
,
AccountId
:
id
})
.
then
(
res
=>
{
that
.
resetLoading
=
false
;
that
.
$q
.
dialog
({
title
:
"密码重置成功"
,
message
:
res
.
Message
,
persistent
:
true
,
ok
:
{
label
:
"确认"
,
flat
:
true
,
focus
:
true
}
});
})
.
catch
(()
=>
{
that
.
resetLoading
=
false
;
});
});
});
}
},
this
.
assistListFormat
.
push
(
tempArr
);
//删除客户资料
});
deleteStudentInfo
(
obj
)
{
},
let
that
=
this
;
//创建账号
var
str
=
obj
.
Status
==
1
?
"【禁用】"
:
"【启用】"
;
createAccount
(
id
)
{
this
.
$q
let
that
=
this
;
createStudentAccount
({
StuId
:
id
}).
then
(
res
=>
{
that
.
$q
.
dialog
({
.
dialog
({
title
:
"创建账号
"
,
title
:
str
+
"学员
"
,
message
:
res
.
Message
,
message
:
"你正在进行"
+
str
+
"学员行为,一旦执行无法找回,是否确认执行?"
,
persistent
:
true
,
persistent
:
true
,
cancel
:
{
label
:
"取消"
,
flat
:
true
},
ok
:
{
ok
:
{
label
:
"确认"
,
label
:
"确认"
,
flat
:
true
,
flat
:
true
,
...
@@ -753,266 +669,196 @@ export default {
...
@@ -753,266 +669,196 @@ export default {
}
}
})
})
.
onOk
(()
=>
{
.
onOk
(()
=>
{
that
.
getStudent
();
that
.
resetLoading
=
true
;
deleteStudent
({
StuId
:
obj
.
StuId
,
Status
:
obj
.
Status
}).
then
(
res
=>
{
this
.
$q
.
notify
({
icon
:
"iconfont icon-chenggong"
,
color
:
"accent"
,
timeout
:
2000
,
message
:
"数据操作成功!"
,
position
:
"top"
});
this
.
getStudent
();
});
})
})
.
onCancel
(()
=>
{
.
onCancel
(()
=>
{
that
.
getStudent
()
;
obj
.
Status
=
obj
.
Status
==
1
?
0
:
1
;
});
});
});
},
},
//刷新列表
resetPw
(
id
)
{
refreshStuList
()
{
let
that
=
this
;
this
.
$emit
(
"success"
);
this
.
$q
this
.
selection
=
[];
.
dialog
({
},
title
:
"重置密码"
,
EditStudent
(
obj
)
{
message
:
"你正在进行重置密码行为,是否确认执行"
,
if
(
obj
)
{
persistent
:
true
,
this
.
stuOption
=
obj
;
cancel
:
{
}
else
{
label
:
"取消"
,
this
.
stuOption
=
null
;
flat
:
true
}
},
this
.
isShowAdd
=
true
;
ok
:
{
},
label
:
"确认重置"
,
closeStuForm
()
{
flat
:
true
,
this
.
isShowStuForm
=
false
;
focus
:
true
this
.
isShowStuRight
=
false
;
}
this
.
isShowAdd
=
false
;
})
this
.
isShowTransfer
=
false
;
.
onOk
(()
=>
{
this
.
isShowAbroad
=
false
;
that
.
resetLoading
=
true
;
},
resetPassword
({
//点击学生姓名弹出
AccountType
:
4
,
getStuRight
(
obj
,
type
)
{
AccountId
:
id
if
(
obj
)
{
})
this
.
stuOption
=
obj
;
.
then
(
res
=>
{
this
.
BelongType
=
obj
.
BelongType
;
that
.
resetLoading
=
false
;
this
.
checkType
=
type
;
that
.
$q
.
dialog
({
}
else
{
title
:
"密码重置成功"
,
this
.
stuOption
=
null
;
message
:
res
.
Message
,
}
persistent
:
true
,
this
.
isShowStuRight
=
true
;
ok
:
{
},
label
:
"确认"
,
//转订单
flat
:
true
,
transferOrder
()
{
focus
:
true
const
firstId
=
this
.
selection
[
0
].
CustomerId
;
const
flag
=
this
.
selection
.
every
(
e
=>
{
return
e
.
CustomerId
==
firstId
;
});
if
(
!
flag
)
{
this
.
$q
.
notify
({
type
:
"negative"
,
position
:
"top"
,
message
:
`所属同行不一致,请重新选择`
});
return
;
}
this
.
isShowTransfer
=
true
;
},
//转留学
transferAbroad
()
{
this
.
isShowAbroad
=
true
;
},
getCurseManager
(
row
)
{
let
managerName
=
"<span class='text-grey-4'>暂未推送</span>"
;
if
(
row
.
AssistList
&&
row
.
AssistList
.
length
>
0
)
{
row
.
AssistList
.
forEach
(
y
=>
{
if
(
y
.
AssistType
==
2
)
{
managerName
=
`<span class='text-dark'>
${
y
.
AssistName
}
</span>`
;
}
});
}
return
managerName
;
},
getTeacherManager
(
row
)
{
let
managerName
=
"<span class='text-grey-4'>暂无</span>"
;
if
(
row
.
AssistList
&&
row
.
AssistList
.
length
>
0
)
{
row
.
AssistList
.
forEach
(
y
=>
{
if
(
y
.
AssistType
==
4
)
{
managerName
=
`<span class='text-dark'>
${
y
.
AssistName
}
</span>`
;
}
});
}
return
managerName
;
},
assistBatchHandler
()
{
if
(
this
.
pushing
)
return
;
this
.
pushing
=
true
;
if
(
this
.
selection
.
length
>
0
)
{
let
msg
=
""
;
let
parameter
=
{
stuIds
:
""
};
this
.
selection
.
forEach
(
x
=>
{
parameter
.
stuIds
+=
","
+
x
.
StuId
;
if
(
x
.
AssistList
&&
x
.
AssistList
.
length
>
0
)
{
x
.
AssistList
.
forEach
(
y
=>
{
if
(
y
.
AssistType
==
2
)
{
msg
=
`客户
${
x
.
StuName
}
:已存在课程顾问:
${
y
.
AssistName
}
,无法再次推送。`
;
}
}
});
});
})
}
.
catch
(()
=>
{
that
.
resetLoading
=
false
;
});
});
},
//删除客户资料
deleteStudentInfo
(
obj
)
{
let
that
=
this
;
var
str
=
obj
.
Status
==
1
?
"【禁用】"
:
"【启用】"
;
this
.
$q
.
dialog
({
title
:
str
+
"学员"
,
message
:
"你正在进行"
+
str
+
"学员行为,一旦执行无法找回,是否确认执行?"
,
persistent
:
true
,
cancel
:
{
label
:
"取消"
,
flat
:
true
},
ok
:
{
label
:
"确认"
,
flat
:
true
,
focus
:
true
}
})
.
onOk
(()
=>
{
that
.
resetLoading
=
true
;
deleteStudent
({
StuId
:
obj
.
StuId
,
Status
:
obj
.
Status
}).
then
(
res
=>
{
this
.
$q
.
notify
({
icon
:
"iconfont icon-chenggong"
,
color
:
"accent"
,
timeout
:
2000
,
message
:
"数据操作成功!"
,
position
:
"top"
});
this
.
getStudent
();
});
});
})
if
(
msg
==
""
)
{
.
onCancel
(()
=>
{
SetStudentAssistBatch
(
parameter
).
then
(
r
=>
{
obj
.
Status
=
obj
.
Status
==
1
?
0
:
1
;
this
.
refreshStuList
();
});
this
.
selection
=
[];
},
this
.
pushMode
=
false
;
//刷新列表
refreshStuList
()
{
console
.
log
(
"change......"
);
this
.
$emit
(
"success"
);
this
.
selection
=
[];
},
EditStudent
(
obj
)
{
if
(
obj
)
{
this
.
stuOption
=
obj
;
}
else
{
this
.
stuOption
=
null
;
}
this
.
isShowAdd
=
true
;
},
closeStuForm
()
{
this
.
isShowStuForm
=
false
;
this
.
isShowStuRight
=
false
;
this
.
isShowAdd
=
false
;
this
.
isShowTransfer
=
false
;
this
.
isShowAbroad
=
false
;
},
//点击学生姓名弹出
getStuRight
(
obj
,
type
)
{
if
(
obj
)
{
this
.
stuOption
=
obj
;
this
.
BelongType
=
obj
.
BelongType
;
this
.
checkType
=
type
;
}
else
{
this
.
stuOption
=
null
;
}
this
.
isShowStuRight
=
true
;
},
//转订单
transferOrder
()
{
const
firstId
=
this
.
selection
[
0
].
CustomerId
;
const
flag
=
this
.
selection
.
every
(
e
=>
{
return
e
.
CustomerId
==
firstId
;
});
if
(
!
flag
)
{
this
.
$q
.
notify
({
type
:
"negative"
,
position
:
"top"
,
message
:
`所属同行不一致,请重新选择`
});
return
;
}
this
.
isShowTransfer
=
true
;
},
//转留学
transferAbroad
()
{
this
.
isShowAbroad
=
true
;
},
getCurseManager
(
row
)
{
let
managerName
=
"<span class='text-grey-4'>暂未推送</span>"
;
if
(
row
.
AssistList
&&
row
.
AssistList
.
length
>
0
)
{
row
.
AssistList
.
forEach
(
y
=>
{
if
(
y
.
AssistType
==
2
)
{
managerName
=
`<span class='text-dark'>
${
y
.
AssistName
}
</span>`
;
}
});
}
return
managerName
;
},
getTeacherManager
(
row
)
{
let
managerName
=
"<span class='text-grey-4'>暂无</span>"
;
if
(
row
.
AssistList
&&
row
.
AssistList
.
length
>
0
)
{
row
.
AssistList
.
forEach
(
y
=>
{
if
(
y
.
AssistType
==
4
)
{
managerName
=
`<span class='text-dark'>
${
y
.
AssistName
}
</span>`
;
}
});
}
return
managerName
;
},
assistBatchHandler
()
{
if
(
this
.
pushing
)
return
;
this
.
pushing
=
true
;
if
(
this
.
selection
.
length
>
0
)
{
let
msg
=
""
;
let
parameter
=
{
stuIds
:
""
};
this
.
selection
.
forEach
(
x
=>
{
parameter
.
stuIds
+=
","
+
x
.
StuId
;
if
(
x
.
AssistList
&&
x
.
AssistList
.
length
>
0
)
{
x
.
AssistList
.
forEach
(
y
=>
{
if
(
y
.
AssistType
==
2
)
{
msg
=
`客户
${
x
.
StuName
}
:已存在课程顾问:
${
y
.
AssistName
}
,无法再次推送。`
;
}
});
});
}
else
{
this
.
pushing
=
false
;
this
.
errorMsg
(
msg
);
}
}
});
if
(
msg
==
""
)
{
SetStudentAssistBatch
(
parameter
).
then
(
r
=>
{
this
.
refreshStuList
();
this
.
selection
=
[];
this
.
pushMode
=
false
;
});
}
else
{
}
else
{
this
.
pushing
=
false
;
this
.
pushing
=
false
;
this
.
errorMsg
(
msg
);
this
.
errorMsg
(
"请选择要推送的学员"
);
}
}
}
else
{
},
this
.
pushing
=
false
;
referDataHandler
()
{
this
.
errorMsg
(
"请选择要推送的学员"
);
this
.
$emit
(
"reload"
);
}
},
},
errorMsg
(
msg
)
{
referDataHandler
()
{
this
.
$emit
(
"reload"
);
},
errorMsg
(
msg
)
{
this
.
$q
.
notify
({
type
:
"negative"
,
position
:
"top"
,
message
:
msg
});
},
//获取员工列表
getEmployeeList
()
{
queryEmployee
({
IsLeave
:
1
}).
then
(
res
=>
{
this
.
employeeList
=
res
.
Data
;
this
.
myEmployeeList
=
res
.
Data
;
});
},
//筛选员工
filterEmployee
(
val
,
update
,
abort
)
{
update
(()
=>
{
this
.
myEmployeeList
=
this
.
employeeList
.
filter
(
v
=>
v
.
EmployeeName
.
indexOf
(
val
)
>
-
1
);
});
},
//保存批量转交
saveTransForm
()
{
if
(
this
.
selection
.
length
==
0
)
{
this
.
$q
.
notify
({
this
.
$q
.
notify
({
type
:
"negative"
,
type
:
"negative"
,
position
:
"top"
,
position
:
"top"
,
message
:
"请选择推送学员"
message
:
msg
});
});
return
;
},
}
//获取员工列表
if
(
this
.
transMsg
.
CreateBy
==
""
)
{
getEmployeeList
()
{
this
.
$q
.
notify
({
queryEmployee
({
type
:
"negative"
,
IsLeave
:
1
position
:
"top"
,
}).
then
(
res
=>
{
message
:
"请选择接收人员!"
this
.
employeeList
=
res
.
Data
;
this
.
myEmployeeList
=
res
.
Data
;
});
});
return
;
},
}
//筛选员工
let
newArr
=
[];
filterEmployee
(
val
,
update
,
abort
)
{
this
.
selection
.
forEach
(
x
=>
{
update
(()
=>
{
newArr
.
push
(
x
.
StuId
);
this
.
myEmployeeList
=
this
.
employeeList
.
filter
(
});
v
=>
v
.
EmployeeName
.
indexOf
(
val
)
>
-
1
this
.
transMsg
.
StuIds
=
newArr
.
toString
();
);
BatchForwardStudent
(
this
.
transMsg
).
then
(
res
=>
{
});
if
(
res
.
Code
==
1
)
{
},
this
.
refreshStuList
();
//保存批量转交
this
.
selection
=
[];
saveTransForm
()
{
this
.
transMsg
.
StuIds
=
""
;
if
(
this
.
selection
.
length
==
0
)
{
this
.
transMsg
.
CreateBy
=
""
;
this
.
pushMode
=
false
;
this
.
$q
.
notify
({
this
.
$q
.
notify
({
type
:
"
iconfont icon-chenggong
"
,
type
:
"
negative
"
,
position
:
"top"
,
position
:
"top"
,
message
:
r
.
Message
message
:
"请选择推送学员"
});
});
return
;
}
}
});
if
(
this
.
transMsg
.
CreateBy
==
""
)
{
this
.
$q
.
notify
({
type
:
"negative"
,
position
:
"top"
,
message
:
"请选择接收人员!"
});
return
;
}
let
newArr
=
[];
this
.
selection
.
forEach
(
x
=>
{
newArr
.
push
(
x
.
StuId
);
});
this
.
transMsg
.
StuIds
=
newArr
.
toString
();
BatchForwardStudent
(
this
.
transMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
refreshStuList
();
this
.
selection
=
[];
this
.
transMsg
.
StuIds
=
""
;
this
.
transMsg
.
CreateBy
=
""
;
this
.
pushMode
=
false
;
this
.
$q
.
notify
({
type
:
"iconfont icon-chenggong"
,
position
:
"top"
,
message
:
r
.
Message
});
}
});
}
}
}
}
};
};
</
script
>
</
script
>
\ No newline at end of file
src/components/todolist/index.vue
View file @
3fb561df
...
@@ -193,7 +193,6 @@ export default {
...
@@ -193,7 +193,6 @@ export default {
},
},
mounted
()
{
mounted
()
{
this
.
currentMenu
=
this
.
menulist
[
0
].
id
.
toString
();
this
.
currentMenu
=
this
.
menulist
[
0
].
id
.
toString
();
//console.log(this.todoTipList);
},
},
methods
:
{}
methods
:
{}
};
};
...
...
src/components/todolist/payee.vue
View file @
3fb561df
<
template
>
<
template
>
<div
class=
"full-height"
>
<div
class=
"full-height"
>
<div
class=
"row items-center"
>
<div
class=
"row items-center"
>
<q-avatar
<q-avatar
size=
"40px"
font-size=
"20px"
color=
"primary"
class=
"q-mr-md"
text-color=
"white"
rounded
size=
"40px"
:icon=
"`iconfont $
{node.icon}`" />
font-size=
"20px"
color=
"primary"
class=
"q-mr-md"
text-color=
"white"
rounded
:icon=
"`iconfont $
{node.icon}`"
/>
<div
class=
"pingfang text-subtitle1"
>
{{
node
.
name
}}
</div>
<div
class=
"pingfang text-subtitle1"
>
{{
node
.
name
}}
</div>
</div>
</div>
<div
class=
"q-my-md row"
>
<div
class=
"q-my-md row"
>
<q-input
<q-input
standout
v-model=
"msg.KeyWords"
dense
type=
"text"
style=
"width:250px;"
label=
"关键字(名称/微信/手机号)"
standout
class=
"q-mr-md"
/>
v-model=
"msg.KeyWords"
<q-btn
color=
"primary"
class=
"q-px-md"
label=
"查询"
unelevated
dense
@
click=
"searchKeyHandler"
/>
dense
type=
"text"
style=
"width:250px;"
label=
"关键字(名称/微信/手机号)"
class=
"q-mr-md"
/>
<q-btn
color=
"primary"
class=
"q-px-md"
label=
"查询"
unelevated
dense
@
click=
"searchKeyHandler"
/>
<div
class=
"col text-right text-grey-6 f12"
>
<div
class=
"col text-right text-grey-6 f12"
>
TIPS:创建订单后,请及时完成订单款项的入账动作,收款单据点击“修改-选择学员-制单”完成此项任务。
TIPS:创建订单后,请及时完成订单款项的入账动作,收款单据点击“修改-选择学员-制单”完成此项任务。
</div>
</div>
</div>
</div>
<div
style=
"height:calc(100% - 158px);overflow-y:auto;"
>
<div
style=
"height:calc(100% - 158px);overflow-y:auto;"
>
<orderlist
<orderlist
:dataList=
"stus"
@
success=
"refreshPage"
:loading=
"loading"
:authObj=
"authObj"
></orderlist>
:dataList=
"stus"
@
success=
"refreshPage"
:loading=
"loading"
:authObj=
"authObj"
></orderlist>
</div>
</div>
<div
class=
"row"
style=
"justify-content: flex-end;padding: 5px 20px"
>
<div
class=
"row"
style=
"justify-content: flex-end;padding: 5px 20px"
>
<q-pagination
<q-pagination
v-model=
"msg.PageIndex"
:max=
"pageCount"
@
input=
"changePage"
class=
"full-width justify-end"
v-model=
"msg.PageIndex"
color=
"primary"
:input=
"true"
>
:max=
"pageCount"
@
input=
"changePage"
class=
"full-width justify-end"
color=
"primary"
:input=
"true"
>
</q-pagination>
</q-pagination>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
orderlist
from
"../sale/orderlist.vue"
;
import
orderlist
from
"../sale/orderlist.vue"
;
import
{
getMyOrderNotBalance
}
from
"../../api/stuMan/index"
;
import
{
export
default
{
getMyOrderNotBalance
components
:
{
orderlist
},
}
from
"../../api/stuMan/index"
;
props
:
[
"node"
],
export
default
{
data
()
{
components
:
{
return
{
orderlist
stus
:
[],
loading
:
false
,
isJudgeTrans
:
1
,
pageCount
:
0
,
msg
:
{
PageIndex
:
1
,
pageSize
:
10
,
KeyWords
:
""
},
//权限判断
authObj
:
{
isShowGuestBtn
:
1
,
//显示新增学员名单按钮
isShowFinanceBtn
:
true
,
//显示财务单据按钮
isShowTransOrder
:
true
,
//显示转交订单按钮
isShowSaleRemark
:
true
,
//显示修改销售备注
isShowBackClass
:
true
,
//显示退课按钮
isShowRenewClass
:
true
,
//显示续课按钮
isShowTransClassOrder
:
true
,
//现在转班按钮
isShowSeparater
:
true
//显示分拆按钮
}
};
},
mounted
()
{
this
.
getStudent
();
},
methods
:
{
getStudent
()
{
if
(
this
.
loading
)
return
;
this
.
loading
=
true
;
getMyOrderNotBalance
(
this
.
msg
)
.
then
(
r
=>
{
this
.
stus
=
r
.
Data
.
PageData
;
this
.
pageCount
=
r
.
Data
.
PageCount
;
console
.
log
(
this
.
stus
);
setTimeout
(()
=>
{
this
.
loading
=
false
;
},
1000
);
})
.
catch
(
e
=>
{
this
.
loading
=
false
;
});
},
},
refreshPage
()
{
props
:
[
"node"
],
this
.
getStudent
();
data
()
{
this
.
$root
.
$emit
(
"updateTodoList"
);
return
{
stus
:
[],
loading
:
false
,
isJudgeTrans
:
1
,
pageCount
:
0
,
msg
:
{
PageIndex
:
1
,
pageSize
:
10
,
KeyWords
:
""
},
//权限判断
authObj
:
{
isShowGuestBtn
:
1
,
//显示新增学员名单按钮
isShowFinanceBtn
:
true
,
//显示财务单据按钮
isShowTransOrder
:
true
,
//显示转交订单按钮
isShowSaleRemark
:
true
,
//显示修改销售备注
isShowBackClass
:
true
,
//显示退课按钮
isShowRenewClass
:
true
,
//显示续课按钮
isShowTransClassOrder
:
true
,
//现在转班按钮
isShowSeparater
:
true
//显示分拆按钮
}
};
},
},
changePage
()
{
mounted
()
{
this
.
getStudent
();
this
.
getStudent
();
},
},
searchKeyHandler
()
{
methods
:
{
this
.
msg
.
PageIndex
=
1
;
getStudent
()
{
this
.
getStudent
();
if
(
this
.
loading
)
return
;
this
.
loading
=
true
;
getMyOrderNotBalance
(
this
.
msg
)
.
then
(
r
=>
{
this
.
stus
=
r
.
Data
.
PageData
;
this
.
pageCount
=
r
.
Data
.
PageCount
;
setTimeout
(()
=>
{
this
.
loading
=
false
;
},
1000
);
})
.
catch
(
e
=>
{
this
.
loading
=
false
;
});
},
refreshPage
()
{
this
.
getStudent
();
this
.
$root
.
$emit
(
"updateTodoList"
);
},
changePage
()
{
this
.
getStudent
();
},
searchKeyHandler
()
{
this
.
msg
.
PageIndex
=
1
;
this
.
getStudent
();
}
}
}
}
};
};
</
script
>
</
script
>
<
style
>
<
style
><
/
style
>
</
style
>
\ No newline at end of file
src/pages/Work.vue
View file @
3fb561df
...
@@ -225,7 +225,6 @@ export default {
...
@@ -225,7 +225,6 @@ export default {
methods
:
{
methods
:
{
initTodoList
()
{
initTodoList
()
{
getTodayStatic
().
then
(
r
=>
{
getTodayStatic
().
then
(
r
=>
{
console
.
log
(
r
);
let
d
=
r
.
Data
;
let
d
=
r
.
Data
;
this
.
todoList
.
result
=
d
;
this
.
todoList
.
result
=
d
;
let
tempCount
=
0
;
let
tempCount
=
0
;
...
...
src/pages/classroom/Scheduling.vue
View file @
3fb561df
<
template
>
<
template
>
<div
class=
"page-body room-list"
v-loading=
"loading"
>
<div
class=
"page-body room-list"
v-loading=
"loading"
>
<div
v-for=
"(item, i) in classdata"
:key=
"item.Key"
>
<div
v-for=
"(item, i) in classdata"
:key=
"item.Key"
>
<template
<template
v-if=
"
v-if=
"
item.SchoolName.indexOf('武侯') == -1 &&
item.SchoolName.indexOf('武侯') == -1 &&
item.SchoolName.indexOf('眉山') == -1
item.SchoolName.indexOf('眉山') == -1
"
"
>
>
<div
class=
"row items-center"
>
<div
class=
"row items-center"
>
<div
class=
"text-h6 col"
>
{{
item
.
SchoolName
}}
</div>
<div
class=
"text-h6 col"
>
{{
item
.
SchoolName
}}
</div>
<div
v-if=
"i == 0"
class=
"f12"
>
只看在线:
</div>
<div
v-if=
"i == 0"
class=
"f12"
>
只看在线:
</div>
<div
v-if=
"i == 0"
>
<div
v-if=
"i == 0"
>
<el-switch
<el-switch
v-model=
"queryStatus"
@
change=
"changeViewStatusHandler"
></el-switch>
v-model=
"queryStatus"
@
change=
"changeViewStatusHandler"
></el-switch>
</div>
</div>
</div>
</div>
<div
class=
"q-mt-md q-mb-lg row"
>
<div
class=
"q-mt-md q-mb-lg row"
>
<template
v-for=
"(x, xi) in item.RoomList"
>
<template
v-for=
"(x, xi) in item.RoomList"
>
<div
<div
class=
"class-room"
style=
"width:calc(20% - 10px);margin-right:10px;margin-bottom:10px;"
class=
"class-room"
v-if=
"queryStatus == 0 || (queryStatus == 1 && x.StatusInfo)"
:key=
"xi"
>
style=
"width:calc(20% - 10px);margin-right:10px;margin-bottom:10px;"
v-if=
"queryStatus == 0 || (queryStatus == 1 && x.StatusInfo)"
:key=
"xi"
>
<div
class=
"img-box"
>
<div
class=
"img-box"
>
<q-img
<q-img
:src=
"x.RoomPicList[0]"
height=
"100%"
fit=
"fill"
spinner-color=
"primary"
spinner-size=
"30px"
:src=
"x.RoomPicList[0]"
v-if=
"x.RoomPicList && x.RoomPicList.length > 0"
/>
height=
"100%"
<q-img
src=
"../../assets/images/classroom/bg-img.jpg"
fit=
"fill"
height=
"100%"
spinner-color=
"primary"
fit=
"fill"
spinner-size=
"30px"
v-else
/>
spinner-color=
"primary"
spinner-size=
"30px"
v-if=
"x.RoomPicList && x.RoomPicList.length > 0"
/>
<q-img
src=
"../../assets/images/classroom/bg-img.jpg"
fit=
"fill"
height=
"100%"
spinner-color=
"primary"
spinner-size=
"30px"
v-else
/>
</div>
</div>
<div
class=
"xuhua"
></div>
<div
class=
"xuhua"
></div>
<div
class=
"q-pa-md"
>
<div
class=
"q-pa-md"
>
...
@@ -58,37 +37,19 @@
...
@@ -58,37 +37,19 @@
</div>
</div>
<div
class=
"q-mt-lg f12 row items-center"
>
<div
class=
"q-mt-lg f12 row items-center"
>
<div
class=
"text-grey-6 f12 col"
>
<div
class=
"text-grey-6 f12 col"
>
<span
<span
class=
"q-px-xs text-white q-mr-md inline-block text-weight-bold"
class=
"q-px-xs text-white q-mr-md inline-block text-weight-bold"
style=
"border-radius:4px;font-size:15;"
:class=
"
{
style=
"border-radius:4px;font-size:15;"
:class=
"
{
'bg-grey-3': !x.StatusInfo,
'bg-grey-3': !x.StatusInfo,
'bg-negative': x.StatusInfo
'bg-negative': x.StatusInfo
}"
}">
>
LIVE
LIVE
</span>
</span>
<span
class=
"text-grey-6"
v-if=
"!x.StatusInfo"
<span
class=
"text-grey-6"
v-if=
"!x.StatusInfo"
>
设备离线
</span>
>
设备离线
</span
<span
class=
"text-grey-6"
v-else-if=
"x.StatusInfo.UnLockUserName == 'lock'"
>
设备在线,未解锁
</span>
>
<span
class=
"text-grey-6"
v-else
>
{{
x
.
StatusInfo
.
UnLockUserName
}}
正在使用
</span>
<span
class=
"text-grey-6"
v-else-if=
"x.StatusInfo.UnLockUserName == 'lock'"
>
设备在线,未解锁
</span
>
<span
class=
"text-grey-6"
v-else
>
{{
x
.
StatusInfo
.
UnLockUserName
}}
正在使用
</span
>
</div>
</div>
<div
v-if=
"x.StatusInfo"
>
<div
v-if=
"x.StatusInfo"
>
<q-btn
<q-btn
color=
"primary"
dense
class=
"f12"
flat
label=
"链接"
@
click=
"openVideo(x)"
/>
color=
"primary"
dense
class=
"f12"
flat
label=
"链接"
@
click=
"openVideo(x)"
/>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -98,200 +59,195 @@
...
@@ -98,200 +59,195 @@
</template>
</template>
</div>
</div>
<q-dialog
v-model=
"showVideo"
@
hide=
"clearVideo"
>
<q-dialog
v-model=
"showVideo"
@
hide=
"clearVideo"
>
<q-card
<q-card
class=
"my-card"
class=
"my-card"
style=
"width:64vw !important;max-width:64vw !important;max-height:32vw !important;height:32vw !important;"
flat
>
style=
"width:64vw !important;max-width:64vw !important;max-height:32vw !important;height:32vw !important;"
<div
id=
"player-con"
style=
"width:100%;height:100%;overflow:hidden;"
></div>
flat
>
<div
id=
"player-con"
style=
"width:100%;height:100%;overflow:hidden;"
></div>
</q-card>
</q-card>
</q-dialog>
</q-dialog>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
{
getUseClassRoomList
}
from
"../../api/classroom/index"
;
import
{
import
*
as
signalR
from
"@aspnet/signalr"
;
getUseClassRoomList
export
default
{
}
from
"../../api/classroom/index"
;
meta
:
{
import
*
as
signalR
from
"@aspnet/signalr"
;
title
:
"教室状态"
export
default
{
},
meta
:
{
data
()
{
title
:
"教室状态"
return
{
},
classdata
:
[],
data
()
{
loading
:
true
,
return
{
showVideo
:
false
,
classdata
:
[],
videoObj
:
null
,
loading
:
true
,
currentRoom
:
null
,
showVideo
:
false
,
queryStatus
:
0
,
videoObj
:
null
,
player
:
null
,
currentRoom
:
null
,
connection
:
""
,
//signalr连接
queryStatus
:
0
,
roomStatusList
:
[]
//返回消息
player
:
null
,
};
connection
:
""
,
//signalr连接
},
roomStatusList
:
[]
//返回消息
};
created
()
{
let
thisVue
=
this
;
console
.
log
(
process
.
env
.
API_SIG
);
this
.
connection
=
new
signalR
.
HubConnectionBuilder
()
.
withUrl
(
process
.
env
.
API_SIG
,
{
skipNegotiation
:
true
,
transport
:
signalR
.
HttpTransportType
.
WebSockets
})
.
configureLogging
(
signalR
.
LogLevel
.
Information
)
.
build
();
this
.
connection
.
on
(
"RoomStatusChange"
,
function
(
message
)
{
thisVue
.
roomStatusList
=
JSON
.
parse
(
message
);
console
.
log
(
thisVue
.
roomStatusList
);
thisVue
.
changeStatus
();
});
this
.
connection
.
onclose
(
async
()
=>
{
setTimeout
(()
=>
{
thisVue
.
linkHub
();
},
3000
);
});
this
.
linkHub
();
},
mounted
()
{
this
.
getList
();
//this.openVideo();
},
methods
:
{
changeViewStatusHandler
()
{},
clearVideo
()
{
this
.
player
.
stop
();
this
.
player
.
dispose
();
this
.
showVideo
=
false
;
},
},
openVideo
(
item
)
{
this
.
showVideo
=
true
;
created
()
{
this
.
currentRoom
=
item
;
let
thisVue
=
this
;
let
url
=
`http://47.96.12.235:5000/live/
${
item
.
RoomId
}
.m3u8`
;
this
.
connection
=
new
signalR
.
HubConnectionBuilder
()
this
.
$nextTick
(()
=>
{
.
withUrl
(
process
.
env
.
API_SIG
,
{
this
.
initPlayer
(
url
);
skipNegotiation
:
true
,
transport
:
signalR
.
HttpTransportType
.
WebSockets
})
.
configureLogging
(
signalR
.
LogLevel
.
Information
)
.
build
();
this
.
connection
.
on
(
"RoomStatusChange"
,
function
(
message
)
{
thisVue
.
roomStatusList
=
JSON
.
parse
(
message
);
thisVue
.
changeStatus
();
});
});
this
.
connection
.
onclose
(
async
()
=>
{
setTimeout
(()
=>
{
thisVue
.
linkHub
();
},
3000
);
});
this
.
linkHub
();
},
},
initPlayer
(
url
)
{
mounted
()
{
this
.
player
=
new
Aliplayer
(
this
.
getList
();
{
//this.openVideo();
id
:
"player-con"
,
source
:
url
,
width
:
"100%"
,
height
:
"100%"
,
autoplay
:
true
,
isLive
:
true
,
rePlay
:
false
,
playsinline
:
true
,
preload
:
true
,
controlBarVisibility
:
"hover"
,
useH5Prism
:
true
},
function
(
player
)
{}
);
},
},
changeStatus
()
{
methods
:
{
this
.
initStatus
();
changeViewStatusHandler
()
{},
if
(
this
.
roomStatusList
&&
this
.
roomStatusList
.
length
>
0
)
{
clearVideo
()
{
this
.
roomStatusList
.
forEach
(
x
=>
{
this
.
player
.
stop
();
this
.
classdata
.
forEach
(
y
=>
{
this
.
player
.
dispose
();
y
.
RoomList
.
forEach
(
z
=>
{
this
.
showVideo
=
false
;
if
(
z
.
RoomId
==
x
.
RoomId
)
{
},
z
.
StatusInfo
=
x
;
openVideo
(
item
)
{
}
this
.
showVideo
=
true
;
});
this
.
currentRoom
=
item
;
});
let
url
=
`http://47.96.12.235:5000/live/
${
item
.
RoomId
}
.m3u8`
;
this
.
$nextTick
(()
=>
{
this
.
initPlayer
(
url
);
});
});
}
},
this
.
$forceUpdate
();
initPlayer
(
url
)
{
},
this
.
player
=
new
Aliplayer
({
initStatus
()
{
id
:
"player-con"
,
this
.
classdata
.
forEach
(
y
=>
{
source
:
url
,
y
.
RoomList
.
forEach
(
z
=>
{
width
:
"100%"
,
this
.
classdata
.
forEach
(
y
=>
{
height
:
"100%"
,
y
.
RoomList
.
forEach
(
z
=>
{
autoplay
:
true
,
z
.
StatusInfo
=
null
;
isLive
:
true
,
rePlay
:
false
,
playsinline
:
true
,
preload
:
true
,
controlBarVisibility
:
"hover"
,
useH5Prism
:
true
},
function
(
player
)
{}
);
},
changeStatus
()
{
this
.
initStatus
();
if
(
this
.
roomStatusList
&&
this
.
roomStatusList
.
length
>
0
)
{
this
.
roomStatusList
.
forEach
(
x
=>
{
this
.
classdata
.
forEach
(
y
=>
{
y
.
RoomList
.
forEach
(
z
=>
{
if
(
z
.
RoomId
==
x
.
RoomId
)
{
z
.
StatusInfo
=
x
;
}
});
});
});
});
});
});
});
this
.
$forceUpdate
();
},
linkHub
()
{
let
thatVue
=
this
;
this
.
connection
.
start
()
.
then
(()
=>
{
console
.
log
(
"linke success"
);
thatVue
.
connection
.
invoke
(
"RegistErp"
,
"IMERP"
);
})
.
catch
(
e
=>
{
console
.
log
(
e
);
setTimeout
(()
=>
{
thatVue
.
linkHub
();
},
3000
);
});
},
goUrl
(
x
,
y
)
{
this
.
$router
.
push
({
path
:
"/classroom/useRecord"
,
query
:
{
key
:
x
.
Key
,
roomId
:
y
.
RoomId
}
}
});
this
.
$forceUpdate
();
},
},
getList
()
{
initStatus
()
{
getUseClassRoomList
({})
this
.
classdata
.
forEach
(
y
=>
{
.
then
(
res
=>
{
y
.
RoomList
.
forEach
(
z
=>
{
this
.
loading
=
false
;
this
.
classdata
.
forEach
(
y
=>
{
if
(
res
.
Code
===
1
)
{
y
.
RoomList
.
forEach
(
z
=>
{
res
.
Data
.
forEach
(
e
=>
{
z
.
StatusInfo
=
null
;
e
.
RoomList
.
forEach
(
_e
=>
{
_e
.
slide
=
0
;
});
});
});
});
this
.
classdata
=
res
.
Data
;
});
this
.
changeStatus
();
});
this
.
$forceUpdate
();
},
linkHub
()
{
let
thatVue
=
this
;
this
.
connection
.
start
()
.
then
(()
=>
{
thatVue
.
connection
.
invoke
(
"RegistErp"
,
"IMERP"
);
})
.
catch
(
e
=>
{
setTimeout
(()
=>
{
thatVue
.
linkHub
();
},
3000
);
});
},
goUrl
(
x
,
y
)
{
this
.
$router
.
push
({
path
:
"/classroom/useRecord"
,
query
:
{
key
:
x
.
Key
,
roomId
:
y
.
RoomId
}
}
})
.
catch
(()
=>
{
this
.
loading
=
false
;
});
});
},
getList
()
{
getUseClassRoomList
({})
.
then
(
res
=>
{
this
.
loading
=
false
;
if
(
res
.
Code
===
1
)
{
res
.
Data
.
forEach
(
e
=>
{
e
.
RoomList
.
forEach
(
_e
=>
{
_e
.
slide
=
0
;
});
});
this
.
classdata
=
res
.
Data
;
this
.
changeStatus
();
}
})
.
catch
(()
=>
{
this
.
loading
=
false
;
});
}
}
}
}
};
};
</
script
>
</
script
>
<
style
>
<
style
>
.class-room
{
.class-room
{
border
:
1px
solid
#f5f5f5
;
border
:
1px
solid
#f5f5f5
;
border-radius
:
10px
;
border-radius
:
10px
;
position
:
relative
;
position
:
relative
;
overflow
:
hidden
;
overflow
:
hidden
;
}
}
.class-room
.img-box
{
height
:
80px
;
.class-room
.img-box
{
}
height
:
80px
;
.class-room
.xuhua
{
}
position
:
absolute
;
top
:
0
;
.class-room
.xuhua
{
height
:
80px
;
position
:
absolute
;
left
:
0
;
top
:
0
;
right
:
0
;
height
:
80px
;
backdrop-filter
:
blur
(
4px
);
left
:
0
;
}
right
:
0
;
.class-room
:hover
.xuhua
{
backdrop-filter
:
blur
(
4px
);
backdrop-filter
:
none
;
}
}
.no-data
{
.class-room
:hover
.xuhua
{
height
:
75px
;
backdrop-filter
:
none
;
font-size
:
14px
;
}
color
:
#000000
;
display
:
flex
;
.no-data
{
justify-content
:
center
;
height
:
75px
;
align-items
:
center
;
font-size
:
14px
;
}
color
:
#000000
;
</
style
>
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
}
</
style
>
\ No newline at end of file
src/pages/financial/market/marketStatistics.vue
View file @
3fb561df
<
style
>
<
style
>
.baseSet_Title
{
.baseSet_Title
{
width
:
120px
!important
;
width
:
120px
!important
;
padding
:
18px
0
0
16px
;
padding
:
18px
0
0
16px
;
text-align
:
right
;
text-align
:
right
;
}
}
.cycleOrderList
.border-bottom
{
/* border-bottom: 1px dashed #EEE; */
.cycleOrderList
.border-bottom
{
padding-bottom
:
5px
;
/* border-bottom: 1px dashed #EEE; */
margin-bottom
:
5px
;
padding-bottom
:
5px
;
}
margin-bottom
:
5px
;
.cycleOrderList
.text-bottom
{
}
height
:
32px
;
line-height
:
32px
;
margin-bottom
:
10px
;
}
.cycleOrderList
.text-bottom
{
.cycleOrderList
._icon_btn
i
.icon-sousuo
{
height
:
32px
;
line-height
:
32px
;
margin-bottom
:
10px
;
}
.cycleOrderList
._icon_btn
i
.icon-sousuo
{
background-color
:
#47BF8C
;
background-color
:
#47BF8C
;
}
}
.cycleOrderList
._icon_btn
i
{
.cycleOrderList
._icon_btn
i
{
width
:
30px
;
width
:
30px
;
height
:
30px
;
height
:
30px
;
display
:
inline-block
;
display
:
inline-block
;
...
@@ -27,462 +33,459 @@
...
@@ -27,462 +33,459 @@
cursor
:
pointer
;
cursor
:
pointer
;
outline
:
none
;
outline
:
none
;
}
}
.cycleOrderList
.el-table
td
,
.el-table
th
{
.cycleOrderList
.el-table
td
,
.el-table
th
{
padding
:
5px
0
;
padding
:
5px
0
;
}
}
</
style
>
</
style
>
<
template
>
<
template
>
<div
class=
"page-body cycleOrderList"
>
<div
class=
"page-body cycleOrderList"
>
<div
class=
"page-search row items-center"
>
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col-3"
>
<div
class=
"col-3"
>
<q-select
filled
stack-label
@
input=
"getDepartList(msg.School_Id),resetSearch()"
option-value=
"SId"
<q-select
filled
stack-label
@
input=
"getDepartList(msg.School_Id),resetSearch()"
option-value=
"SId"
option-label=
"SName"
v-model=
"msg.School_Id"
ref=
"School_Id"
:options=
"schoolList"
label=
"校区"
option-label=
"SName"
v-model=
"msg.School_Id"
ref=
"School_Id"
:options=
"schoolList"
label=
"校区"
:dense=
"false"
:dense=
"false"
emit-value
map-options
/>
emit-value
map-options
/>
</div>
</div>
<div
class=
"col-3"
>
<div
class=
"col-3"
>
<selectTree
:treeData=
'DeptList'
:defaultArray=
"returnString"
nodeKey=
"DeptId"
:multiple=
"false"
<selectTree
:treeData=
'DeptList'
:defaultArray=
"returnString"
nodeKey=
"DeptId"
:multiple=
"false"
labelKey=
"DeptName"
childrenKey=
"ChildList"
tipText=
"选择部门"
@
getChild=
"getChild"
></selectTree>
labelKey=
"DeptName"
childrenKey=
"ChildList"
tipText=
"选择部门"
@
getChild=
"getChild"
></selectTree>
</div>
</div>
<q-select
@
input=
"resetSearch"
filled
stack-label
option-value=
"Id"
option-label=
"EmployeeName"
use-input
<q-select
@
input=
"resetSearch"
filled
stack-label
option-value=
"Id"
option-label=
"EmployeeName"
use-input
v-model=
"msg.UserId"
ref=
"DeptTier"
:options=
"PersionList"
label=
"销售"
:dense=
"false"
v-model=
"msg.UserId"
ref=
"DeptTier"
:options=
"PersionList"
label=
"销售"
:dense=
"false"
class=
"col-3 "
emit-value
class=
"col-3 "
emit-value
map-options
@
filter=
"filterFn2"
>
map-options
@
filter=
"filterFn2"
>
<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"
>
未找到相关数据
未找到相关数据
</q-item-section>
</q-item-section>
</q-item>
</q-item>
</
template
>
</
template
>
</q-select>
</q-select>
<div
class=
"col-3"
>
<div
class=
"col-3"
>
<q-select
filled
stack-label
use-input
input-debounce=
"0"
option-value=
"ClassId"
@
input=
"getList"
<q-select
filled
stack-label
use-input
input-debounce=
"0"
option-value=
"ClassId"
@
input=
"getList"
option-label=
"ClassName"
v-model=
"msg.ClassId"
:options=
"ClassList"
label=
"班级"
:dense=
"false"
option-label=
"ClassName"
v-model=
"msg.ClassId"
:options=
"ClassList"
label=
"班级"
:dense=
"false"
emit-value
emit-value
map-options
@
filter=
"filterFn"
>
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"
>
未找到相关数据
未找到相关数据
</q-item-section>
</q-item-section>
</q-item>
</q-item>
</
template
>
</
template
>
</q-select>
</q-select>
</div>
</div>
</div>
</div>
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col-3"
>
<q-select
filled
stack-label
@
input=
"resetSearch()"
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.PeriodId"
:options=
"PeriodsList"
label=
"周期"
:dense=
"false"
emit-value
map-options
/>
</div>
<div
class=
"col-3"
>
<q-input
filled
v-model=
"msg.OrderId"
@
keyup
.
enter
.
native=
"resetSearch()"
label=
"订单号"
/>
</div>
<div
class=
"col-3"
>
<q-select
filled
stack-label
input-debounce=
"0"
option-value=
"Id"
@
input=
"resetSearch()"
option-label=
"Name"
v-model=
"msg.UserType"
:options=
"UserTypeList"
label=
"类型"
:dense=
"false"
emit-value
map-options
>
</q-select>
</div>
<div
class=
"col-3"
>
<q-select
filled
stack-label
input-debounce=
"0"
option-value=
"Id"
@
input=
"resetSearch()"
option-label=
"Name"
v-model=
"msg.IsDept"
:options=
"IsDeptList"
label=
"业绩方式"
:dense=
"false"
emit-value
map-options
>
</q-select>
</div>
</div>
</div>
</div>
<div
class=
"page-search row items-center"
style=
"justify-content: space-between;"
>
</div>
<span
style=
"font-size: 20px;font-weight: 400;"
>
提成统计
<span
style=
"font-size: 16px;"
>
(提成总计:{{TotalCommission}})
</span>
</span>
<div
class=
"page-search row items-center"
>
<q-btn
color=
"primary"
size=
"11px"
label=
"导出"
@
click=
"tcexport"
style=
"margin-left:10px"
/>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col-3"
>
<q-select
filled
stack-label
@
input=
"resetSearch()"
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.PeriodId"
:options=
"PeriodsList"
label=
"周期"
:dense=
"false"
emit-value
map-options
/>
</div>
<div
class=
"col-3"
>
<q-input
filled
v-model=
"msg.OrderId"
@
keyup
.
enter
.
native=
"resetSearch()"
label=
"订单号"
/>
</div>
<div
class=
"col-3"
>
<q-select
filled
stack-label
input-debounce=
"0"
option-value=
"Id"
@
input=
"resetSearch()"
option-label=
"Name"
v-model=
"msg.UserType"
:options=
"UserTypeList"
label=
"类型"
:dense=
"false"
emit-value
map-options
>
</q-select>
</div>
<div
class=
"col-3"
>
<q-select
filled
stack-label
input-debounce=
"0"
option-value=
"Id"
@
input=
"resetSearch()"
option-label=
"Name"
v-model=
"msg.IsDept"
:options=
"IsDeptList"
label=
"业绩方式"
:dense=
"false"
emit-value
map-options
>
</q-select>
</div>
</div>
</div>
<
template
>
<
/div
>
<el-table
<div
class=
"page-search row items-center"
style=
"justify-content: space-between;"
>
ref=
"filterTable"
<span
style=
"font-size: 20px;font-weight: 400;"
>
提成统计
<span
:data=
"tableData"
style=
"font-size: 16px;"
>
(提成总计:{{TotalCommission}})
</span>
</span>
v-loading =
'loading'
<q-btn
color=
"primary"
size=
"11px"
label=
"导出"
@
click=
"tcexport"
style=
"margin-left:10px"
/>
</div>
:header-cell-style=
"
{backgroundColor:'#f5f6f7', color: '#a8a8b3'}"
<
template
>
border
<el-table
ref=
"filterTable"
:data=
"tableData"
v-loading=
'loading'
style="width: 100%">
:header-cell-style=
"
{backgroundColor:'#f5f6f7', color: '#a8a8b3'}" border
style="width: 100%">
<el-table-column
prop=
"SchoolName"
label=
"校区"
width=
'150'
></el-table-column>
<el-table-column
prop=
"SchoolName"
label=
"校区"
width=
'150'
></el-table-column>
<el-table-column
prop=
"DeptName"
label=
"部门"
></el-table-column>
<el-table-column
prop=
"DeptName"
label=
"部门"
></el-table-column>
<el-table-column
prop=
"UserType"
label=
"类型"
>
<el-table-column
prop=
"UserType"
label=
"类型"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
<span
v-if=
"scope.row.UserType==1"
>
市场
</span>
<span
v-if=
"scope.row.UserType==1"
>
市场
</span>
<span
v-if=
"scope.row.UserType==2"
>
顾问
</span>
<span
v-if=
"scope.row.UserType==2"
>
顾问
</span>
<span
v-if=
"scope.row.UserType==3"
>
教师
</span>
<span
v-if=
"scope.row.UserType==3"
>
教师
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"UserName"
label=
"人员"
>
</el-table-column>
<el-table-column
prop=
"UserName"
label=
"人员"
>
</el-table-column>
<el-table-column
prop=
"IsDept"
label=
"业绩方式"
>
<el-table-column
prop=
"IsDept"
label=
"业绩方式"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<span
v-if=
"scope.row.IsDept==1"
>
部门
</span>
<span
v-if=
"scope.row.IsDept==1"
>
部门
</span>
<span
v-if=
"scope.row.IsDept==2"
>
个人
</span>
<span
v-if=
"scope.row.IsDept==2"
>
个人
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
width=
'170'
prop=
"ClassName"
label=
"班级信息"
>
<el-table-column
width=
'170'
prop=
"ClassName"
label=
"班级信息"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<div><span
style=
"cursor: pointer;text-decoration: underline;"
@
click=
"goUrlclass('/course/classManage',scope.row.ClassName)"
>
{{
scope
.
row
.
ClassName
}}
</span>
{{
scope
.
row
.
ClassTypeName
}}
<span
style=
"color: #409EFF;"
v-if=
'scope.row.IsContinueClass==1'
>
(续)
</span></div>
<div><span
style=
"cursor: pointer;text-decoration: underline;"
<div>
学生数量:
{{
scope
.
row
.
StudentCount
}}
人
</div
>
@
click=
"goUrlclass('/course/classManage',scope.row.ClassName)"
>
{{
scope
.
row
.
ClassName
}}
</span
>
<div>
班号:
{{
scope
.
row
.
ClassNo
}}
</div
>
{{
scope
.
row
.
ClassTypeName
}}
<span
style=
"color: #409EFF;"
v-if=
'scope.row.IsContinueClass==1'
>
(续)
</span
>
</
template
>
</div
>
</el-table-column
>
<div>
学生数量:
{{
scope
.
row
.
StudentCount
}}
人
</div
>
<el-table-column
prop=
"OrderId"
label=
"订单号"
>
<div>
班号:
{{
scope
.
row
.
ClassNo
}}
</div
>
<
template
slot-scope=
"scope"
>
</
template
>
<div
style=
"cursor: pointer;text-decoration: underline;"
@
click=
"goUrlorderList(scope.row.ClassType == -1 ?'/sale/studyOrderStatistics' : '/sale/orderStatistics',scope.row)"
>
{{
scope
.
row
.
OrderId
}}
</div
>
</el-table-column
>
<el-table-column
prop=
"OrderId"
label=
"订单号"
>
</
template
>
<
template
slot-scope=
"scope"
>
</el-table-column>
<div
style=
"cursor: pointer;text-decoration: underline;"
<el-table-column
width=
'130'
prop=
"TotalCommissionMoney"
label=
"订单发放信息"
>
@
click=
"goUrlorderList(scope.row.ClassType == -1 ?'/sale/studyOrderStatistics' : '/sale/orderStatistics',scope.row)"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
OrderId
}}
</div
>
<div
style=
"color: rgb(255, 156, 0);cursor: pointer;text-decoration: underline;"
@
click=
"getmingxi(scope.row)"
>
</
template
>
应发:
{{
scope
.
row
.
TotalCommissionMoney
}}
</el-table-column>
<q-popup-proxy
transition-show=
"flip-up"
transition-hide=
"flip-down
"
>
<el-table-column
width=
'130'
prop=
"TotalCommissionMoney"
label=
"订单发放信息
"
>
<div
style=
"padding: 10px;border-radius: 4px;background: #FFF;max-width: 500px;
"
>
<
template
slot-scope=
"scope
"
>
{{
ChangeLog
}}
<div
style=
"color: rgb(255, 156, 0);cursor: pointer;text-decoration: underline;"
</div
>
@
click=
"getmingxi(scope.row)"
>
</q-popup-proxy>
应发:
{{
scope
.
row
.
TotalCommissionMoney
}}
</div
>
<q-popup-proxy
transition-show=
"flip-up"
transition-hide=
"flip-down"
>
<div>
累计已发:
{{
scope
.
row
.
GiveOutMoney
}}
</div
>
<div
style=
"padding: 10px;border-radius: 4px;background: #FFF;max-width: 500px;"
>
</
template
>
{{
ChangeLog
}}
</div>
</el-table-column
>
</q-popup-proxy
>
<el-table-column
prop=
"IsFirstCommission"
label=
"首次发放"
>
</div>
<
template
slot-scope=
"scope"
>
<div>
累计已发:
{{
scope
.
row
.
GiveOutMoney
}}
</div
>
<div>
{{
scope
.
row
.
IsFirstCommission
==
1
?
'是'
:
'否'
}}
</div
>
</
template
>
</
template
>
</el-table-column
>
</el-table-column
>
<el-table-column
prop=
"IsFirstCommission"
label=
"首次发放"
>
<
el-table-column
prop=
"TotalHours"
label=
"课时统计"
width=
'160'
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<div>
{{
scope
.
row
.
IsFirstCommission
==
1
?
'是'
:
'否'
}}
</div
>
<div>
总计课时:
{{
scope
.
row
.
TotalHours
}}
</div
>
</
template
>
<div>
学习课时:
{{
scope
.
row
.
TotalLearn
}}
</div
>
</el-table-column
>
<div>
当期课时:
{{
scope
.
row
.
CurrentHours
>=
0
?
scope
.
row
.
CurrentHours
:
'-'
}}
</div
>
<el-table-column
prop=
"TotalHours"
label=
"课时统计"
width=
'160'
>
</
template
>
<
template
slot-scope=
"scope"
>
</el-table-column
>
<div>
总计课时:
{{
scope
.
row
.
TotalHours
}}
</div
>
<div>
学习课时:
{{
scope
.
row
.
TotalLearn
}}
</div>
<el-table-column
width=
'160'
prop=
"CurrentPeriodMoney"
label=
"当期发放信息"
>
<div>
当期课时:
{{
scope
.
row
.
CurrentHours
>=
0
?
scope
.
row
.
CurrentHours
:
'-'
}}
</div
>
<
template
slot-scope=
"scope"
>
</
template
>
<div
style=
"color: rgb(255, 156, 0);"
>
应发:
{{
scope
.
row
.
CurrentPeriodMoney
}}
</div
>
</el-table-column
>
<div>
抵扣:
{{
scope
.
row
.
DeductionMoney
}}
</div
>
<el-table-column
width=
'160'
prop=
"CurrentPeriodMoney"
label=
"当期发放信息"
>
</
template
>
<
template
slot-scope=
"scope"
>
</el-table-column
>
<div
style=
"color: rgb(255, 156, 0);"
>
应发:
{{
scope
.
row
.
CurrentPeriodMoney
}}
</div
>
<div>
抵扣:
{{
scope
.
row
.
DeductionMoney
}}
</div>
<
el-table-column
prop=
"YFMoney"
label=
"最终发放"
>
<
/
template
>
<
template
slot-scope=
"scope"
>
</el-table-column
>
<div
style=
"color: rgb(233, 82, 82);"
>
{{
scope
.
row
.
YFMoney
}}
</div
>
<el-table-column
prop=
"YFMoney"
label=
"最终发放"
>
<
template
slot-scope=
"scope"
>
<
/
template
>
<
div
style=
"color: rgb(233, 82, 82);"
>
{{
scope
.
row
.
YFMoney
}}
</div
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
width=
'85'
prop=
"Periods"
label=
"期数"
>
</el-table-column>
<el-table-column
width=
'85'
prop=
"Periods"
label=
"期数"
>
</el-table-column>
<el-table-column
prop=
"Remark"
width=
'160'
label=
"备注"
>
</el-table-column>
<el-table-column
prop=
"Remark"
width=
'160'
label=
"备注"
>
</el-table-column>
</el-table>
</el-table>
<div
style=
"margin-top: 10px;text-align: center;"
>
<div
style=
"margin-top: 10px;text-align: center;"
>
<el-pagination
background
@
current-change=
"handleCurrentChanges"
layout=
"total,prev, pager, next, jumper"
:current-page
.
sync=
"msg.PageIndex
"
<el-pagination
background
@
current-change=
"handleCurrentChanges"
layout=
"total,prev, pager, next, jumper
"
:page-size=
"msg.PageSize"
:total=
'total'
>
:current-page
.
sync=
"msg.PageIndex"
:page-size=
"msg.PageSize"
:total=
'total'
>
</el-pagination>
</el-pagination>
</div>
</div>
</template>
</template>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
{
import
{
getSchoolDropdown
getSchoolDropdown
}
from
'../../../api/school/index'
}
from
'../../../api/school/index'
import
{
import
{
queryEmployee
queryEmployee
}
from
'../../../api/users/user'
}
from
'../../../api/users/user'
import
{
import
{
getDeptTree
getDeptTree
}
from
'../../../api/system/dept.js'
}
from
'../../../api/system/dept.js'
import
{
import
{
getSellAchievementsStatistics
,
getSellAchievementsStatistics
,
getSellAchievementsPeriodsList
,
getSellAchievementsPeriodsList
,
getSellAchievementsChangeLog
getSellAchievementsChangeLog
}
from
'../../../api/finance/index'
}
from
'../../../api/finance/index'
import
{
import
{
getClassDropDownList
,
getClassDropDownList
,
}
from
"../../../api/school/index"
;
}
from
"../../../api/school/index"
;
import
selectTree
from
'../../../components/common/select-tree'
import
selectTree
from
'../../../components/common/select-tree'
import
{
import
{
EduDownLoad
,
EduDownLoad
,
}
from
'../../../api/common/common'
;
}
from
'../../../api/common/common'
;
import
{
number
}
from
'echarts'
import
{
export
default
{
number
meta
:
{
}
from
'echarts'
title
:
"业绩提成统计"
export
default
{
},
meta
:
{
props
:
{},
title
:
"业绩提成统计"
components
:
{
},
selectTree
props
:
{},
},
components
:
{
data
()
{
selectTree
return
{
},
loading
:
false
,
data
()
{
//列表数据参数
return
{
msg
:
{
loading
:
false
,
PageIndex
:
1
,
//列表数据参数
PageSize
:
10
,
msg
:
{
School_Id
:
'-1'
,
PageIndex
:
1
,
Depart_Id
:
0
,
PageSize
:
10
,
PeriodId
:
0
,
School_Id
:
'-1'
,
UserId
:
0
,
Depart_Id
:
0
,
ClassId
:
0
,
PeriodId
:
0
,
OrderId
:
''
,
UserId
:
0
,
UserType
:
0
,
//类型 1市场、2顾问、3教师
ClassId
:
0
,
IsDept
:
0
,
//业绩方式 1部门 2个人
OrderId
:
''
,
},
UserType
:
0
,
//类型 1市场、2顾问、3教师
UserTypeList
:[{
Id
:
0
,
Name
:
'不限'
},{
Id
:
1
,
Name
:
'市场'
},{
Id
:
2
,
Name
:
'顾问'
},{
Id
:
3
,
Name
:
'教师'
},],
IsDept
:
0
,
//业绩方式 1部门 2个人
IsDeptList
:[{
Id
:
0
,
Name
:
'不限'
},{
Id
:
1
,
Name
:
'部门'
},{
Id
:
2
,
Name
:
'个人'
}],
},
pageCount
:
0
,
UserTypeList
:
[{
persistent
:
false
,
Id
:
0
,
listData
:{},
Name
:
'不限'
tableData
:[],
},
{
total
:
0
,
Id
:
1
,
company
:[],
Name
:
'市场'
department
:[],
},
{
ClassList
:[],
Id
:
2
,
allClassList
:[],
Name
:
'顾问'
returnString
:
[],
//默认岗位
},
{
see_tcdetailed
:
false
,
Id
:
3
,
schoolList
:[],
Name
:
'教师'
DeptList
:
[],
// 部门下拉
},
],
PersionList
:
[],
//员工列表
IsDeptList
:
[{
AllemployeeList
:
[],
//所有员工
Id
:
0
,
PeriodsList
:[],
//周期列表
Name
:
'不限'
TotalCommission
:
0
,
},
{
ChangeLog
:
''
,
Id
:
1
,
Name
:
'部门'
},
{
Id
:
2
,
Name
:
'个人'
}],
pageCount
:
0
,
persistent
:
false
,
listData
:
{},
tableData
:
[],
total
:
0
,
company
:
[],
department
:
[],
ClassList
:
[],
allClassList
:
[],
returnString
:
[],
//默认岗位
see_tcdetailed
:
false
,
schoolList
:
[],
DeptList
:
[],
// 部门下拉
PersionList
:
[],
//员工列表
AllemployeeList
:
[],
//所有员工
PeriodsList
:
[],
//周期列表
TotalCommission
:
0
,
ChangeLog
:
''
,
}
},
created
()
{
let
userinfo
=
this
.
getLocalStorage
();
userinfo
.
ActionMenuList
.
map
(
x
=>
{
//判断权限
if
(
x
.
FunctionCode
==
"see_tcdetailed"
)
{
//判断是否可以查看其他明细
this
.
see_tcdetailed
=
true
;
}
}
})
if
(
this
.
see_tcdetailed
==
false
)
{
this
.
msg
.
UserId
=
userinfo
.
Id
}
},
mounted
()
{
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
OrderId
)
{
this
.
msg
.
OrderId
=
this
.
$route
.
query
.
OrderId
}
// 从业绩表跳转带参
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
UserId
)
{
this
.
PersionList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
AllemployeeList
))
this
.
msg
.
UserId
=
this
.
$route
.
query
.
UserId
-
0
}
this
.
getList
()
this
.
getEmployee
();
//销售
this
.
getPeriodList
()
//周期
this
.
setClass
()
//班级
this
.
getBranchList
()
//校区
this
.
getDepartList
(
0
);
},
methods
:
{
resetSearch
()
{
this
.
msg
.
PageIndex
=
1
;
this
.
getList
()
},
},
created
()
{
getList
()
{
let
userinfo
=
this
.
getLocalStorage
();
if
(
this
.
msg
)
userinfo
.
ActionMenuList
.
map
(
x
=>
{
//判断权限
this
.
loading
=
true
;
if
(
x
.
FunctionCode
==
"see_tcdetailed"
){
//判断是否可以查看其他明细
getSellAchievementsStatistics
(
this
.
msg
).
then
(
res
=>
{
this
.
see_tcdetailed
=
true
;
this
.
loading
=
false
;
if
(
res
.
Code
==
1
)
{
this
.
tableData
=
res
.
Data
.
PageData
.
List
this
.
TotalCommission
=
res
.
Data
.
PageData
.
TotalCommission
this
.
total
=
res
.
Data
.
Count
}
}
})
})
if
(
this
.
see_tcdetailed
==
false
){
this
.
msg
.
UserId
=
userinfo
.
Id
}
},
},
mounted
()
{
unique
(
arr
,
Name
)
{
//数组去重
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
OrderId
){
const
res
=
new
Map
();
this
.
msg
.
OrderId
=
this
.
$route
.
query
.
OrderId
return
arr
.
filter
(
}
(
list
)
=>
!
res
.
has
(
list
.
text
)
&&
res
.
set
(
list
.
text
,
1
)
// 从业绩表跳转带参
);
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
UserId
){
},
this
.
PersionList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
AllemployeeList
))
handleCurrentChanges
(
val
)
{
this
.
msg
.
UserId
=
this
.
$route
.
query
.
UserId
-
0
this
.
msg
.
PageIndex
=
val
;
}
this
.
getList
()
this
.
getList
()
this
.
getEmployee
();
//销售
this
.
getPeriodList
()
//周期
this
.
setClass
()
//班级
this
.
getBranchList
()
//校区
this
.
getDepartList
(
0
);
},
},
methods
:
{
//选择班级
resetSearch
()
{
setClass
(
item
)
{
this
.
msg
.
PageIndex
=
1
;
this
.
isShowClass
=
true
;
this
.
getList
()
getClassDropDownList
({
},
CourseId
:
0
,
getList
(){
IsAddDefault
:
1
,
//添加默认选项
console
.
log
(
this
.
msg
,
'02222222222'
)
}).
then
(
res
=>
{
if
(
this
.
msg
)
if
(
res
.
Code
==
1
)
{
this
.
loading
=
true
;
var
jsonData
=
res
.
Data
;
getSellAchievementsStatistics
(
this
.
msg
).
then
(
res
=>
{
let
obj
=
{
if
(
res
.
Code
==
1
)
{
ClassId
:
0
,
this
.
loading
=
false
;
ClassName
:
'不限'
this
.
tableData
=
res
.
Data
.
PageData
.
List
this
.
TotalCommission
=
res
.
Data
.
PageData
.
TotalCommission
this
.
total
=
res
.
Data
.
Count
}
}
})
jsonData
.
unshift
(
obj
)
},
if
(
jsonData
&&
jsonData
.
length
>
0
)
{
unique
(
arr
,
Name
){
//数组去重
this
.
ClassList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));
const
res
=
new
Map
();
this
.
allClassList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));;
return
arr
.
filter
(
(
list
)
=>
!
res
.
has
(
list
.
text
)
&&
res
.
set
(
list
.
text
,
1
)
);
},
handleCurrentChanges
(
val
){
this
.
msg
.
PageIndex
=
val
;
this
.
getList
()
},
//选择班级
setClass
(
item
)
{
this
.
isShowClass
=
true
;
getClassDropDownList
({
CourseId
:
0
,
IsAddDefault
:
1
,
//添加默认选项
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
var
jsonData
=
res
.
Data
;
let
obj
=
{
ClassId
:
0
,
ClassName
:
'不限'
}
jsonData
.
unshift
(
obj
)
if
(
jsonData
&&
jsonData
.
length
>
0
)
{
this
.
ClassList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));
this
.
allClassList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));;
}
}
}
});
}
},
});
//筛选员工
},
filterFn
(
val
,
update
)
{
//筛选员工
update
(()
=>
{
filterFn
(
val
,
update
)
{
if
(
val
===
''
)
{
update
(()
=>
{
this
.
ClassList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
allClassList
))
if
(
val
===
''
)
{
}
else
{
this
.
ClassList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
allClassList
))
const
needle
=
val
.
toLowerCase
()
}
else
{
this
.
ClassList
=
this
.
allClassList
.
filter
(
v
=>
v
.
ClassName
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
)
const
needle
=
val
.
toLowerCase
()
}
this
.
ClassList
=
this
.
allClassList
.
filter
(
v
=>
v
.
ClassName
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
)
})
}
},
})
getBranchList
(){
//获取校区
},
getSchoolDropdown
({}).
then
(
res
=>
{
getBranchList
()
{
//获取校区
this
.
schoolList
=
res
.
Data
;
getSchoolDropdown
({}).
then
(
res
=>
{
var
obj
=
{
this
.
schoolList
=
res
.
Data
;
SName
:
'全部'
,
var
obj
=
{
SId
:
'-1'
SName
:
'全部'
,
}
SId
:
'-1'
this
.
schoolList
.
unshift
(
obj
);
}
}).
catch
(()
=>
{
this
.
schoolList
.
unshift
(
obj
);
}).
catch
(()
=>
{
})
})
},
},
//获取部门下拉数据
//获取部门下拉数据
getDepartList
(
id
)
{
getDepartList
(
id
)
{
if
(
id
==-
1
){
if
(
id
==
-
1
)
{
id
=
0
id
=
0
}
}
let
msg
=
{
let
msg
=
{
School_Id
:
id
School_Id
:
id
}
}
getDeptTree
(
msg
).
then
(
res
=>
{
getDeptTree
(
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
if
(
res
.
Code
==
1
)
{
this
.
DeptList
=
res
.
Data
;
this
.
DeptList
=
res
.
Data
;
}
}
})
})
},
},
getChild
(
deptArray
)
{
getChild
(
deptArray
)
{
var
tempStr
=
""
;
var
tempStr
=
""
;
if
(
deptArray
&&
deptArray
!=
''
)
{
if
(
deptArray
&&
deptArray
!=
''
)
{
tempStr
=
deptArray
;
tempStr
=
deptArray
;
}
}
if
(
tempStr
)
{
if
(
tempStr
)
{
this
.
msg
.
Depart_Id
=
tempStr
;
this
.
msg
.
Depart_Id
=
tempStr
;
}
else
{
}
else
{
this
.
msg
.
Depart_Id
=
0
;
this
.
msg
.
Depart_Id
=
0
;
}
this
.
resetSearch
();
},
//筛选员工
filterFn2
(
val
,
update
)
{
update
(()
=>
{
if
(
val
===
''
)
{
this
.
PersionList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
AllemployeeList
))
}
else
{
const
needle
=
val
.
toLowerCase
()
this
.
PersionList
=
this
.
AllemployeeList
.
filter
(
v
=>
v
.
EmployeeName
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
)
}
})
},
//获取员工列表
getEmployee
()
{
var
qMsg
=
{
EmployeeName
:
""
}
queryEmployee
(
qMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
let
obj
=
{
EmployeeName
:
'不限'
,
Id
:
0
}
}
this
.
resetSearch
();
res
.
Data
.
unshift
(
obj
)
},
var
jsonData
=
res
.
Data
;
//筛选员工
if
(
jsonData
&&
jsonData
.
length
>
0
)
{
filterFn2
(
val
,
update
)
{
this
.
AllemployeeList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));
update
(()
=>
{
this
.
PersionList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));;
if
(
val
===
''
)
{
this
.
PersionList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
AllemployeeList
))
}
else
{
const
needle
=
val
.
toLowerCase
()
this
.
PersionList
=
this
.
AllemployeeList
.
filter
(
v
=>
v
.
EmployeeName
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
)
}
}
})
}
},
})
//获取员工列表
},
getEmployee
()
{
getPeriodList
()
{
//获取周期下拉列表
var
qMsg
=
{
getSellAchievementsPeriodsList
({}).
then
(
res
=>
{
EmployeeName
:
""
if
(
res
.
Code
==
1
)
{
this
.
PeriodsList
=
res
.
Data
let
obj
=
{
Name
:
'不限'
,
Id
:
0
}
}
queryEmployee
(
qMsg
).
then
(
res
=>
{
this
.
PeriodsList
.
unshift
(
obj
)
if
(
res
.
Code
==
1
)
{
// 从业绩表跳转带参
let
obj
=
{
if
(
this
.
$route
.
query
.
Periods
)
{
EmployeeName
:
'不限'
,
this
.
PeriodsList
.
forEach
(
item
=>
{
Id
:
0
if
(
item
.
Periods
==
this
.
$route
.
query
.
Periods
)
{
}
this
.
msg
.
PeriodId
=
item
.
Id
res
.
Data
.
unshift
(
obj
)
var
jsonData
=
res
.
Data
;
if
(
jsonData
&&
jsonData
.
length
>
0
)
{
this
.
AllemployeeList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));
this
.
PersionList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));;
}
}
}
})
})
},
getPeriodList
(){
//获取周期下拉列表
getSellAchievementsPeriodsList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
PeriodsList
=
res
.
Data
let
obj
=
{
Name
:
'不限'
,
Id
:
0
}
this
.
PeriodsList
.
unshift
(
obj
)
// 从业绩表跳转带参
if
(
this
.
$route
.
query
.
Periods
){
this
.
PeriodsList
.
forEach
(
item
=>
{
if
(
item
.
Periods
==
this
.
$route
.
query
.
Periods
){
this
.
msg
.
PeriodId
=
item
.
Id
}
})
}
}
})
},
tcexport
(){
//导出
var
msg
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
msg
));
EduDownLoad
(
"/SellAchievements/GetSellAchievementsStatisticsToExcel"
,
msg
,
"业绩提成统计.xls"
)
},
goUrlclass
(
path
,
Names
){
//班级
let
Name
=
encodeURI
(
Names
)
this
.
OpenNewUrl
(
path
,
{
ClassName
:
Name
,
});
},
goUrlorderList
(
path
,
row
){
//订单跳转
this
.
OpenNewUrl
(
path
,
{
OrderId
:
row
.
OrderId
,
// EnterID:row.UserId
});
},
getmingxi
(
row
){
//明细
getSellAchievementsChangeLog
({
OrderId
:
row
.
OrderId
,
UserId
:
row
.
UserId
,
UserType
:
row
.
UserType
,
IsDept
:
row
.
IsDept
,
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
ChangeLog
=
res
.
Data
}
}
}
);
}
}
}
)
},
},
}
tcexport
()
{
//导出
var
msg
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
msg
));
</
script
>
EduDownLoad
(
"/SellAchievements/GetSellAchievementsStatisticsToExcel"
,
msg
,
"业绩提成统计.xls"
)
<
style
lang=
"sass"
>
},
@import
url('~assets/css/table.sass')
goUrlclass
(
path
,
Names
)
{
//班级
let
Name
=
encodeURI
(
Names
)
</
style
>
this
.
OpenNewUrl
(
path
,
{
ClassName
:
Name
,
\ No newline at end of file
});
},
goUrlorderList
(
path
,
row
)
{
//订单跳转
this
.
OpenNewUrl
(
path
,
{
OrderId
:
row
.
OrderId
,
});
},
getmingxi
(
row
)
{
//明细
getSellAchievementsChangeLog
({
OrderId
:
row
.
OrderId
,
UserId
:
row
.
UserId
,
UserType
:
row
.
UserType
,
IsDept
:
row
.
IsDept
,
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
ChangeLog
=
res
.
Data
}
});
}
},
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
\ No newline at end of file
src/pages/stuMan/classPlan.vue
View file @
3fb561df
...
@@ -34,7 +34,7 @@
...
@@ -34,7 +34,7 @@
<el-option
:key=
"0"
label=
"全部"
:value=
"0"
>
</el-option>
<el-option
:key=
"0"
label=
"全部"
:value=
"0"
>
</el-option>
<el-option
:key=
"1"
label=
"跟班课"
:value=
"1"
>
</el-option>
<el-option
:key=
"1"
label=
"跟班课"
:value=
"1"
>
</el-option>
<el-option
:key=
"2"
label=
"试听课"
:value=
"2"
>
</el-option>
<el-option
:key=
"2"
label=
"试听课"
:value=
"2"
>
</el-option>
<el-option
:key=
"
2
"
label=
"预约课"
:value=
"3"
>
</el-option>
<el-option
:key=
"
3
"
label=
"预约课"
:value=
"3"
>
</el-option>
<div
slot=
"prefix"
class=
"full-height flex items-center"
style=
"color: #000; padding-right: 10px"
>
<div
slot=
"prefix"
class=
"full-height flex items-center"
style=
"color: #000; padding-right: 10px"
>
类型:
类型:
</div>
</div>
...
...
src/pages/stuMan/classRecord.vue
View file @
3fb561df
...
@@ -2,8 +2,7 @@
...
@@ -2,8 +2,7 @@
<div
class=
"page-body MainPlan xg"
>
<div
class=
"page-body MainPlan xg"
>
<div
class=
"col row wrap q-col-gutter-md"
>
<div
class=
"col row wrap q-col-gutter-md"
>
<div
class=
"col-2"
>
<div
class=
"col-2"
>
<el-select
v-model=
"msg.TeacherId"
style=
"width: 100%"
placeholder=
"教师"
size=
"small"
<el-select
v-model=
"msg.TeacherId"
style=
"width: 100%"
placeholder=
"教师"
size=
"small"
@
change=
"getTypeWay()"
>
@
change=
"getTypeWay()"
>
<el-option
v-for=
"item in TeacherList"
:key=
"item.TeacherName"
:label=
"item.TeacherName"
:value=
"item.TId"
>
<el-option
v-for=
"item in TeacherList"
:key=
"item.TeacherName"
:label=
"item.TeacherName"
:value=
"item.TId"
>
</el-option>
</el-option>
<div
slot=
"prefix"
class=
"full-height flex items-center"
style=
"color: #000; padding-right: 10px"
>
<div
slot=
"prefix"
class=
"full-height flex items-center"
style=
"color: #000; padding-right: 10px"
>
...
@@ -36,13 +35,18 @@
...
@@ -36,13 +35,18 @@
<el-option
:key=
"0"
label=
"全部"
:value=
"0"
>
</el-option>
<el-option
:key=
"0"
label=
"全部"
:value=
"0"
>
</el-option>
<el-option
:key=
"1"
label=
"跟班课"
:value=
"1"
>
</el-option>
<el-option
:key=
"1"
label=
"跟班课"
:value=
"1"
>
</el-option>
<el-option
:key=
"2"
label=
"试听课"
:value=
"2"
>
</el-option>
<el-option
:key=
"2"
label=
"试听课"
:value=
"2"
>
</el-option>
<el-option
:key=
"
2
"
label=
"预约课"
:value=
"3"
>
</el-option>
<el-option
:key=
"
3
"
label=
"预约课"
:value=
"3"
>
</el-option>
<div
slot=
"prefix"
class=
"full-height flex items-center"
style=
"color: #000; padding-right: 10px"
>
<div
slot=
"prefix"
class=
"full-height flex items-center"
style=
"color: #000; padding-right: 10px"
>
状态:
状态:
</div>
</div>
</el-select>
</el-select>
</div>
</div>
<div
class=
"col-2"
>
<div
class=
"col-2"
>
<el-input
v-model=
"msg.StuName"
style=
"width: 100%"
placeholder=
"学员姓名"
size=
"small"
@
input=
"getTypeWay()"
clearable
>
<div
slot=
"prefix"
class=
"full-height flex items-center"
style=
"color: #000; padding-right: 10px"
>
学员:
</div>
</el-input>
</div>
</div>
</div>
</div>
<teachTable
v-if=
"commonType == 2"
:tableData=
"tableData"
:PageCount=
"PageCount"
:setMsg=
"tabMsg"
:showCZ=
"true"
<teachTable
v-if=
"commonType == 2"
:tableData=
"tableData"
:PageCount=
"PageCount"
:setMsg=
"tabMsg"
:showCZ=
"true"
...
@@ -54,11 +58,13 @@
...
@@ -54,11 +58,13 @@
import
{
import
{
getTeacherDropDownList
,
getTeacherDropDownList
,
queryClassRoomList
,
queryClassRoomList
,
getStudentDorpDownList
,
}
from
"../../api/school/index"
;
}
from
"../../api/school/index"
;
import
{
import
{
GetClassPlanStatistical
,
GetClassPlanStatistical
,
GetClassPlanStatisticalPage
,
GetClassPlanStatisticalPage
,
}
from
"../../api/teacher/index"
;
}
from
"../../api/teacher/index"
;
import
classmateForm
from
"../../components/course/classmate-form"
;
import
classmateForm
from
"../../components/course/classmate-form"
;
import
teachTable
from
"../teacher/components/teachTable"
;
import
teachTable
from
"../teacher/components/teachTable"
;
import
changeClassForm
from
"../../components/teacher/changeClassForm.vue"
;
import
changeClassForm
from
"../../components/teacher/changeClassForm.vue"
;
...
@@ -81,13 +87,15 @@
...
@@ -81,13 +87,15 @@
TeacherId
:
0
,
TeacherId
:
0
,
ClassRoomId
:
0
,
ClassRoomId
:
0
,
dataList
:
{},
dataList
:
{},
loading
:
false
,
loading
:
false
,
msg
:
{
msg
:
{
StartTime
:
""
,
StartTime
:
""
,
EndTime
:
""
,
EndTime
:
""
,
TeacherId
:
0
,
TeacherId
:
0
,
ClassRoomId
:
0
,
ClassRoomId
:
0
,
ClassType
:
0
,
ClassType
:
0
,
Student_Id
:
""
,
StuName
:
""
,
},
},
commonType
:
2
,
//1日历模式 2列表模式
commonType
:
2
,
//1日历模式 2列表模式
typeName
:
"列表模式"
,
typeName
:
"列表模式"
,
...
@@ -101,6 +109,7 @@
...
@@ -101,6 +109,7 @@
ClassRoomId
:
0
,
ClassRoomId
:
0
,
ClassType
:
0
,
ClassType
:
0
,
OrderBy
:
1
,
OrderBy
:
1
,
StuName
:
""
,
},
},
tableData
:
[],
//表格数据
tableData
:
[],
//表格数据
PageCount
:
0
,
PageCount
:
0
,
...
@@ -121,6 +130,7 @@
...
@@ -121,6 +130,7 @@
},
},
},
},
today
:
""
,
today
:
""
,
StuList
:
[],
//学员列表
};
};
},
},
created
()
{
created
()
{
...
@@ -148,6 +158,13 @@
...
@@ -148,6 +158,13 @@
this
.
getTableList
();
this
.
getTableList
();
},
},
methods
:
{
methods
:
{
queryStuList
()
{
getStudentDorpDownList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
StuList
=
res
.
Data
;
}
});
},
refreshPage
()
{
refreshPage
()
{
this
.
getPlanList
();
this
.
getPlanList
();
},
},
...
@@ -212,10 +229,11 @@
...
@@ -212,10 +229,11 @@
this
.
tabMsg
.
EndTime
=
this
.
msg
.
EndTime
;
this
.
tabMsg
.
EndTime
=
this
.
msg
.
EndTime
;
this
.
tabMsg
.
ClassRoomId
=
this
.
msg
.
ClassRoomId
;
this
.
tabMsg
.
ClassRoomId
=
this
.
msg
.
ClassRoomId
;
this
.
tabMsg
.
ClassType
=
this
.
msg
.
ClassType
;
this
.
tabMsg
.
ClassType
=
this
.
msg
.
ClassType
;
this
.
tabMsg
.
TeacherId
=
this
.
msg
.
TeacherId
;
this
.
tabMsg
.
TeacherId
=
this
.
msg
.
TeacherId
;
this
.
loading
=
true
;
this
.
tabMsg
.
StuName
=
this
.
msg
.
StuName
;
this
.
loading
=
true
;
GetClassPlanStatisticalPage
(
this
.
tabMsg
).
then
((
res
)
=>
{
GetClassPlanStatisticalPage
(
this
.
tabMsg
).
then
((
res
)
=>
{
this
.
loading
=
false
;
this
.
loading
=
false
;
if
(
res
.
Code
==
1
)
{
if
(
res
.
Code
==
1
)
{
this
.
tableData
=
res
.
Data
.
PageData
;
this
.
tableData
=
res
.
Data
.
PageData
;
this
.
PageCount
=
res
.
Data
.
PageCount
;
this
.
PageCount
=
res
.
Data
.
PageCount
;
...
@@ -235,11 +253,9 @@
...
@@ -235,11 +253,9 @@
},
},
},
},
};
};
</
script
>
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
.xg
.el-input--prefix
.el-input__inner
{
.xg
.el-input--prefix
.el-input__inner
{
padding-left
:
50px
;
padding-left
:
50px
;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/pages/teacher/assessmentType.vue
View file @
3fb561df
...
@@ -38,7 +38,8 @@
...
@@ -38,7 +38,8 @@
</q-td>
</q-td>
<template
v-for=
"(subItem,subIndex) in props.row.SubtypeList[cIndex].OptionList"
>
<template
v-for=
"(subItem,subIndex) in props.row.SubtypeList[cIndex].OptionList"
>
<q-td
:key=
"subIndex+200000"
class=
"assessmentType_td"
>
<q-td
:key=
"subIndex+200000"
class=
"assessmentType_td"
>
<div
style=
"width:150px;white-space:normal; "
>
{{
subItem
.
LevelDesc
}}
<q-badge
color=
"green"
v-if=
"subItem.LevelScore>0"
>
<div
style=
"width:150px;white-space:normal; "
>
{{
subItem
.
LevelDesc
}}
<q-badge
color=
"green"
v-if=
"subItem.LevelScore>0"
>
{{
subItem
.
LevelScore
}}
分
{{
subItem
.
LevelScore
}}
分
</q-badge>
</q-badge>
</div>
</div>
...
@@ -60,7 +61,8 @@
...
@@ -60,7 +61,8 @@
</q-td>
</q-td>
<template
v-for=
"(subItem,subIndex) in props.row.SubtypeList[cIndex].OptionList"
>
<template
v-for=
"(subItem,subIndex) in props.row.SubtypeList[cIndex].OptionList"
>
<q-td
:key=
"subIndex+400000"
class=
"assessmentType_td"
>
<q-td
:key=
"subIndex+400000"
class=
"assessmentType_td"
>
<div
style=
"width:150px;white-space:normal; "
>
{{
subItem
.
LevelDesc
}}
<q-badge
color=
"green"
v-if=
"subItem.LevelScore>0"
>
<div
style=
"width:150px;white-space:normal; "
>
{{
subItem
.
LevelDesc
}}
<q-badge
color=
"green"
v-if=
"subItem.LevelScore>0"
>
{{
subItem
.
LevelScore
}}
分
{{
subItem
.
LevelScore
}}
分
</q-badge>
</q-badge>
</div>
</div>
...
@@ -113,7 +115,6 @@
...
@@ -113,7 +115,6 @@
this
.
columns
=
[];
this
.
columns
=
[];
queryAssessmentTypeList
(
this
.
msg
).
then
(
res
=>
{
queryAssessmentTypeList
(
this
.
msg
).
then
(
res
=>
{
this
.
loading
=
false
;
this
.
loading
=
false
;
console
.
log
(
"res"
,
res
);
if
(
res
.
Code
==
1
)
{
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
.
result
;
this
.
dataList
=
res
.
Data
.
result
;
this
.
columns
=
res
.
Data
.
header
;
this
.
columns
=
res
.
Data
.
header
;
...
...
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