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
c1020604
Commit
c1020604
authored
Feb 14, 2022
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
页面修改
parent
c415ef3d
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
496 additions
and
484 deletions
+496
-484
guestConsultation.vue
src/pages/sale/guestConsultation.vue
+496
-484
No files found.
src/pages/sale/guestConsultation.vue
View file @
c1020604
<
style
>
@import
"../financial/css/cssReset.css"
;
@import
"../financial/css/cssReset.css"
;
.baseSet_Title
{
.baseSet_Title
{
width
:
120px
!important
;
padding
:
18px
0
0
16px
;
text-align
:
right
;
}
.singeRowTable
tr
th
{
border
:
1px
solid
#d2d2d2
;
}
}
.singeRowTable
tr
th
{
border
:
1px
solid
#d2d2d2
;
}
</
style
>
<
template
>
<div
class=
"page-body marketRules"
>
<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
@
keyup
.
enter
.
native=
"resetSearch"
dense
clearable
filled
v-model=
"msg.StuName"
label=
"昵称"
maxlength=
"20"
/>
<q-input
@
keyup
.
enter
.
native=
"resetSearch"
dense
clearable
filled
v-model=
"msg.StuName"
label=
"昵称"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-input
@
keyup
.
enter
.
native=
"resetSearch"
dense
clearable
filled
v-model=
"msg.StuRealMobile"
label=
"电话"
maxlength=
"20"
/>
<q-input
@
keyup
.
enter
.
native=
"resetSearch"
dense
clearable
filled
v-model=
"msg.StuRealMobile"
label=
"电话"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-input
@
keyup
.
enter
.
native=
"resetSearch"
dense
clearable
filled
v-model=
"msg.QQ"
label=
"QQ"
maxlength=
"20"
/>
<q-input
@
keyup
.
enter
.
native=
"resetSearch"
dense
clearable
filled
v-model=
"msg.QQ"
label=
"QQ"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-input
@
keyup
.
enter
.
native=
"resetSearch"
dense
clearable
filled
v-model=
"msg.WeChatNo"
label=
"微信号"
maxlength=
"20"
/>
<q-input
@
keyup
.
enter
.
native=
"resetSearch"
dense
clearable
filled
v-model=
"msg.WeChatNo"
label=
"微信号"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
filled
v-model=
"msg.StuType"
dense
clearable
:options=
"customTypeList"
...
...
@@ -49,33 +53,14 @@
:options=
"BelongTypeList"
emit-value
map-options
label=
"归属类型"
/>
</div>
<div
class=
"col-3"
v-if=
"msg.BelongType == 4"
>
<q-select
@
input=
"resetSearch"
dense
clearable
@
filter=
"filterSubord"
use-input
filled
option-value=
"Id"
option-label=
"EmployeeName"
v-model=
"msg.CreateIds"
multiple
:options=
"SubordList"
emit-value
map-options
label=
"我下属的"
/>
<q-select
@
input=
"resetSearch"
dense
clearable
@
filter=
"filterSubord"
use-input
filled
option-value=
"Id"
option-label=
"EmployeeName"
v-model=
"msg.CreateIds"
multiple
:options=
"SubordList"
emit-value
map-options
label=
"我下属的"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
dense
filled
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.Q_EnrollState"
:options=
"FTypeList"
emit-value
map-options
label=
"报名状态"
/>
</div>
<!-- <div class="col-3">
<q-select @input="resetSearch" dense filled option-value="Id" option-label="Name" v-model="msg.StuGuestState" clearable
:options="hetongList" emit-value map-options label="合同状态"
/>
</div> -->
</div>
</div>
<div
class=
"page-search row items-center"
v-if=
"morequery"
>
...
...
@@ -84,14 +69,10 @@
<q-select
@
input=
"resetSearch"
dense
filled
v-model=
"msg.StuStage"
:options=
"customState"
option-label=
"Name"
option-value=
"Id"
emit-value
map-options
label=
"客户状态"
clearable
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
dense
filled
option-value=
"Id"
option-label=
"EmployeeName"
v-model=
"msg.ConsultantId"
clearable
:options=
"RoleListData"
emit-value
map-options
label=
"课程顾问"
/>
<q-select
@
input=
"resetSearch"
dense
filled
option-value=
"Id"
option-label=
"EmployeeName"
v-model=
"msg.ConsultantId"
clearable
:options=
"RoleListData"
emit-value
map-options
label=
"课程顾问"
/>
</div>
<div
class=
"col-3"
>
<q-field
filled
dense
>
<
template
v-slot:control
>
...
...
@@ -102,33 +83,29 @@
</q-field>
</div>
<div
class=
"col-3"
>
(
<q-radio
size=
"xs"
v-model=
"msg.Q_FType"
val=
"1"
label=
"范围内有跟进记录"
@
input =
'resetSearch'
/>
<q-radio
size=
"xs"
v-model=
"msg.Q_FType"
val=
"2"
label=
"范围内没有跟进记录"
@
input =
'resetSearch'
/>
)
(
<q-radio
size=
"xs"
v-model=
"msg.Q_FType"
val=
"1"
label=
"范围内有跟进记录"
@
input=
'resetSearch'
/>
<q-radio
size=
"xs"
v-model=
"msg.Q_FType"
val=
"2"
label=
"范围内没有跟进记录"
@
input=
'resetSearch'
/>
)
</div>
</div>
</div>
<div
style=
"width: 100%;padding: 0 10px;margin-bottom: 10px;display: flex;align-items: center;justify-content: space-between;"
>
<div
style=
"width: 100%;padding: 0 10px;margin-bottom: 10px;display: flex;align-items: center;justify-content: space-between;"
>
<div
style=
"font-weight: bold;"
>
总人数:{{Count}}人
</div>
<div>
<span
@
click=
"morequery=!morequery"
style=
"display:inline-flex;align-items:center;cursor: pointer;"
>
<span
@
click=
"morequery=!morequery"
style=
"display:inline-flex;align-items:center;cursor: pointer;"
>
<span
style=
"margin-right:5px;color: #089bab;"
>
高级查询
</span>
<img
v-show=
"morequery"
class=
"roatImg"
style=
"width:12px;height:12px"
src=
"../../assets/images/more.png"
alt=
""
>
<img
v-show=
"morequery"
class=
"roatImg"
style=
"width:12px;height:12px"
src=
"../../assets/images/more.png"
alt=
""
>
<img
v-show=
"!morequery"
style=
"width:12px;height:12px"
src=
"../../assets/images/more.png"
alt=
""
>
</span>
</div>
</div>
<div
class=
"page-content"
>
<q-table
:pagination=
"msg"
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
class=
"sticky-column-table sticky-right-column-table "
:data=
"dataList"
:columns=
"columns"
row-key=
"StuId"
>
class=
"sticky-column-table sticky-right-column-table "
:data=
"dataList"
:columns=
"columns"
row-key=
"StuId"
>
<
template
v-slot:body-cell-StuName=
"props"
>
<q-td
:props=
"props"
>
<div
class=
"text-blue cursor-pointer"
@
click=
"getStuRight(props.row)"
>
...
...
@@ -138,7 +115,8 @@
</
template
>
<
template
v-slot:body-cell-EnrollState=
"props"
>
<q-td
:props=
"props"
>
<q-badge
:color=
"props.row.EnrollState == 1 ? 'negative' : 'primary'"
:label=
"props.row.EnrollState == 1 ? '已报名' : '未成交'"
/>
<q-badge
:color=
"props.row.EnrollState == 1 ? 'negative' : 'primary'"
:label=
"props.row.EnrollState == 1 ? '已报名' : '未成交'"
/>
</q-td>
</
template
>
<
template
v-slot:body-cell-PlanPrice=
"props"
>
...
...
@@ -149,62 +127,53 @@
</
template
>
<
template
v-slot:body-cell-BaseCondition=
"props"
>
<q-td
:props=
"props"
class=
"w500text"
>
<div
><span
class=
"w500text-l"
>
基本情况:
</span>
<span
class=
"text-r"
>
{{
props
.
row
.
BaseCondition
?
props
.
row
.
BaseCondition
:
'暂无'
}}
</span>
</div>
<div
><span
class=
"w500text-l"
>
需求点:
</span>
<span
class=
"text-r"
>
{{
props
.
row
.
DemandPoint
?
props
.
row
.
DemandPoint
:
'暂无'
}}
</span></div>
<div
><span
class=
"w500text-l"
>
抗拒点:
</span>
<span
class=
"text-r"
>
{{
props
.
row
.
ResistPoint
?
props
.
row
.
ResistPoint
:
'暂无'
}}
</span></div>
<div
><span
class=
"w500text-l"
>
咨询结果:
</span>
<span
class=
"text-r"
>
{{
props
.
row
.
ConsultingResults
?
props
.
row
.
ConsultingResults
:
'暂无'
}}
</span></div>
<div><span
class=
"w500text-l"
>
基本情况:
</span>
<span
class=
"text-r"
>
{{
props
.
row
.
BaseCondition
?
props
.
row
.
BaseCondition
:
'暂无'
}}
</span>
</div>
<div><span
class=
"w500text-l"
>
需求点:
</span>
<span
class=
"text-r"
>
{{
props
.
row
.
DemandPoint
?
props
.
row
.
DemandPoint
:
'暂无'
}}
</span></div>
<div><span
class=
"w500text-l"
>
抗拒点:
</span>
<span
class=
"text-r"
>
{{
props
.
row
.
ResistPoint
?
props
.
row
.
ResistPoint
:
'暂无'
}}
</span></div>
<div><span
class=
"w500text-l"
>
咨询结果:
</span>
<span
class=
"text-r"
>
{{
props
.
row
.
ConsultingResults
?
props
.
row
.
ConsultingResults
:
'暂无'
}}
</span></div>
</q-td>
</
template
>
<
template
v-slot:body-cell-FURemark=
"props"
>
<q-td
>
<q-td
>
<div
style=
"display: flex;align-items: center;justify-content: space-between;"
>
{{
props
.
row
.
FUTime
}}
<span
style=
"text-decoration: underline;cursor: pointer;color: #2961fe ;"
v-if=
"props.row.FURemark"
@
click=
"lookgengduo(props.row)"
>
更多
</span>
<span
style=
"text-decoration: underline;cursor: pointer;color: #2961fe ;"
v-if=
"props.row.FURemark"
@
click=
"lookgengduo(props.row)"
>
更多
</span>
</div>
<div
style=
"max-width: 200px;overflow: hidden;white-space: normal;word-break:break-all;"
v-if=
"props.row.FURemark"
v-html=
"props.row.FURemark"
></div>
<div
style=
"max-width: 200px;overflow: hidden;white-space: normal;word-break:break-all;"
v-if=
"props.row.FURemark"
v-html=
"props.row.FURemark"
></div>
</q-td>
</
template
>
<
template
v-slot:bottom
>
<q-pagination
class=
"full-width justify-end"
v-model=
"msg.pageIndex"
color=
"primary"
:max=
"PageCount"
:input=
"true"
@
input=
"changePage"
/>
</
template
>
</q-table>
</div>
<studentRight-form
v-if=
"isShowStuRight"
:isJudgeTrans=
"isJudgeTrans"
:BelongType=
"BelongType"
:save-obj=
"stuOption"
@
close=
"closeStuForm"
@
success=
"getList"
@
reload=
"getList"
>
<studentRight-form
v-if=
"isShowStuRight"
:isJudgeTrans=
"isJudgeTrans"
:BelongType=
"BelongType"
:save-obj=
"stuOption"
@
close=
"closeStuForm"
@
success=
"getList"
@
reload=
"getList"
>
</studentRight-form>
<studentFUForm
v-if=
"isShowStuFU"
:save-obj=
"stuOption"
@
close=
"closeStuForm"
>
<studentFUForm
v-if=
"isShowStuFU"
:save-obj=
"stuOption"
@
close=
"closeStuForm"
>
</studentFUForm>
</div>
</template>
<
script
>
import
{
import
{
getStudentConsultPageList
,
}
from
'../../api/studyabroad/index'
import
{
queryEmployee
}
from
"../../api/users/user"
;
}
from
'../../api/studyabroad/index'
import
{
queryEmployee
}
from
"../../api/users/user"
;
import
{
GetStuChannelList
,
}
from
"../../api/sale/sale"
;
import
{
import
{
EduDownLoad
}
from
"../../api/common/common"
;
import
{
queryStuStageList
,
GetStudentTypeList
,
GetPersonalDimension
...
...
@@ -212,7 +181,7 @@ import {
import
studentRightForm
from
"../../components/school/student/studentRight-form"
;
import
studentFUForm
from
"../../components/school/student/studentFu-form"
;
export
default
{
export
default
{
meta
:
{
title
:
"客户咨询"
},
...
...
@@ -227,42 +196,83 @@ export default {
pageIndex
:
1
,
pageSize
:
12
,
rowsPerPage
:
12
,
StuName
:
"
"
,
StuRealMobile
:
''
,
QQ
:
''
,
WeChatNo
:
''
,
StuType
:
''
,
//学生类型
StuGuestState
:
''
,
//合同状态
BelongType
:
'1'
,
//归属类型(1-全部,2-我负责的,3-我协同的,4 下属)
Q_EnrollState
:
'2'
,
//报名状态 1已报名 2未成交 0不限
IsQueryMyStu
:
'1'
,
//是否我协助的 1是 2否
StuName
:
"周
"
,
StuRealMobile
:
''
,
QQ
:
''
,
WeChatNo
:
''
,
StuType
:
''
,
//学生类型
StuGuestState
:
''
,
//合同状态
BelongType
:
'1'
,
//归属类型(1-全部,2-我负责的,3-我协同的,4 下属)
Q_EnrollState
:
'2'
,
//报名状态 1已报名 2未成交 0不限
IsQueryMyStu
:
'1'
,
//是否我协助的 1是 2否
CreateIds
:
[],
StuStage
:
''
,
//客户状态
ConsultantId
:
''
,
//课程顾问
SFTime
:
''
,
EFTime
:
''
,
Q_FType
:
'1'
,
//跟进类型 1范围内有跟进记录 2范围内没有跟进记录
StuChannel
:
''
,
//渠道
StuStage
:
''
,
//客户状态
ConsultantId
:
''
,
//课程顾问
SFTime
:
''
,
EFTime
:
''
,
Q_FType
:
'1'
,
//跟进类型 1范围内有跟进记录 2范围内没有跟进记录
StuChannel
:
''
,
//渠道
},
loading
:
false
,
dataList
:
[],
//列表数据
PageCount
:
0
,
PageCount
:
0
,
customTypeList
:
[],
//客户类型
customState
:
[],
isMyStuList
:[{
Id
:
'-1'
,
Name
:
'不限'
},{
Id
:
'1'
,
Name
:
'是'
},{
Id
:
'0'
,
Name
:
'否'
},],
FTypeList
:[{
Id
:
'0'
,
Name
:
'不限'
},{
Id
:
'1'
,
Name
:
'已报名'
},{
Id
:
'2'
,
Name
:
'未成交'
},],
BelongTypeList
:[{
Id
:
'1'
,
Name
:
'全部'
},{
Id
:
'2'
,
Name
:
'我负责的'
},{
Id
:
'3'
,
Name
:
'我协同的'
},{
Id
:
4
,
Name
:
"我下属的"
}],
hetongList
:[{
Id
:
'1'
,
Name
:
'正常'
},{
Id
:
'2'
,
Name
:
'退学'
},{
Id
:
'5'
,
Name
:
'停课'
},{
Id
:
'7'
,
Name
:
'毕业'
},],
isMyStuList
:
[{
Id
:
'-1'
,
Name
:
'不限'
},
{
Id
:
'1'
,
Name
:
'是'
},
{
Id
:
'0'
,
Name
:
'否'
},
],
FTypeList
:
[{
Id
:
'0'
,
Name
:
'不限'
},
{
Id
:
'1'
,
Name
:
'已报名'
},
{
Id
:
'2'
,
Name
:
'未成交'
},
],
BelongTypeList
:
[{
Id
:
'1'
,
Name
:
'全部'
},
{
Id
:
'2'
,
Name
:
'我负责的'
},
{
Id
:
'3'
,
Name
:
'我协同的'
},
{
Id
:
4
,
Name
:
"我下属的"
}],
hetongList
:
[{
Id
:
'1'
,
Name
:
'正常'
},
{
Id
:
'2'
,
Name
:
'退学'
},
{
Id
:
'5'
,
Name
:
'停课'
},
{
Id
:
'7'
,
Name
:
'毕业'
},
],
dateArray
:
[],
//日期数组
morequery
:
false
,
CompanyList
:
[],
allCourseList
:
[],
//课程
myCourseList
:
[],
morequery
:
false
,
CompanyList
:
[],
allCourseList
:
[],
//课程
myCourseList
:
[],
RoleListData
:
[],
//课程顾问下拉数据
StuChannelList
:
[],
//收客渠道
allStuChannelList
:
[],
//所有收客渠道
Count
:
0
,
Count
:
0
,
columns
:
[{
name
:
"StuName"
,
label
:
"学生"
,
...
...
@@ -306,14 +316,6 @@ export default {
field
:
"StuChannelName"
,
align
:
"left"
},
// {
// name: "CourseName",
// label: "报名课程",
// field: "CourseName",
// align: "left"
// },
{
name
:
"JapanBaseInfo"
,
label
:
"日语基础"
,
...
...
@@ -326,38 +328,33 @@ export default {
field
:
"PlanPrice"
,
align
:
"left"
},
{
name
:
"BaseCondition"
,
label
:
"客户情况分析"
,
field
:
"BaseCondition"
,
align
:
"left"
},
{
name
:
"FURemark"
,
label
:
"顾问跟进备注"
,
field
:
"FURemark"
,
align
:
"left"
},
],
stuOption
:
null
,
BelongType
:
1
,
isShowStuRight
:
false
,
isJudgeTrans
:
1
,
isShowStuFU
:
false
,
isShowStuRight
:
false
,
isJudgeTrans
:
1
,
isShowStuFU
:
false
,
SubordList
:
[],
//我的下属数据
AllSubordList
:
[]
}
},
created
()
{
let
userinfo
=
this
.
getLocalStorage
();
//这个权限和学员跟踪学员的权限一样
userinfo
.
ActionMenuList
.
map
(
x
=>
{
//判断权限
if
(
x
.
FunctionCode
==
"studentTracking_look"
){
//判断是否有保存的权限
userinfo
.
ActionMenuList
.
map
(
x
=>
{
//判断权限
if
(
x
.
FunctionCode
==
"studentTracking_look"
)
{
//判断是否有保存的权限
this
.
msg
.
IsQueryMyStu
=
2
return
}
...
...
@@ -370,9 +367,21 @@ export default {
this
.
GetSubordList
()
this
.
getRole
()
this
.
GetStuChannelList
();
//this.downLoadStudentConsult();
},
methods
:
{
//下载客人咨询
downLoadStudentConsult
()
{
var
msg
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
msg
));
this
.
loading
=
true
;
EduDownLoad
(
"/StudentStat/DownLoadStudentConsult"
,
msg
,
"客人咨询.xls"
,
res
=>
{
this
.
loading
=
false
;
}
);
},
//获取收客渠道
GetStuChannelList
()
{
GetStuChannelList
({}).
then
(
res
=>
{
...
...
@@ -442,13 +451,13 @@ export default {
msg
.
SFTime
=
""
;
msg
.
EFTime
=
""
;
}
if
(
msg
.
StuType
==
''
||
msg
.
StuType
==
null
)
{
if
(
msg
.
StuType
==
''
||
msg
.
StuType
==
null
)
{
msg
.
StuType
=
0
}
if
(
msg
.
StuGuestState
==
''
||
msg
.
StuGuestState
==
null
)
{
if
(
msg
.
StuGuestState
==
''
||
msg
.
StuGuestState
==
null
)
{
msg
.
StuGuestState
=
0
}
if
(
msg
.
StuChannel
==
''
||
msg
.
StuChannel
==
null
)
{
if
(
msg
.
StuChannel
==
''
||
msg
.
StuChannel
==
null
)
{
msg
.
StuChannel
=
0
}
...
...
@@ -483,7 +492,7 @@ export default {
getStuRight
(
obj
)
{
if
(
obj
)
{
this
.
stuOption
=
obj
;
this
.
BelongType
=
3
;
//点击弹出不让修改
this
.
BelongType
=
3
;
//点击弹出不让修改
}
this
.
isShowStuRight
=
true
;
},
...
...
@@ -491,7 +500,7 @@ export default {
this
.
isShowStuRight
=
false
;
this
.
isShowStuFU
=
false
},
lookgengduo
(
obj
){
//跟进备注
lookgengduo
(
obj
)
{
//跟进备注
if
(
obj
)
{
this
.
stuOption
=
obj
;
this
.
BelongType
=
obj
.
BelongType
;
...
...
@@ -502,13 +511,10 @@ export default {
},
}
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
@import
url('~assets/css/table.sass')
</
style
>
<
style
scoped
>
/
deep
/
.el-input__inner
,
...
...
@@ -516,26 +522,32 @@ export default {
background-color
:
transparent
;
border
:
none
;
}
.w500text
{
.w500text
{
min-width
:
500px
;
width
:
500px
;
white-space
:
normal
;
word-break
:
break-all
white-space
:
normal
;
word-break
:
break-all
}
.w500text
div
{
display
:
flex
;
.w500text
div
{
display
:
flex
;
align-items
:
flex-start
;
}
.w500text
.w500text-l
{
.w500text
.w500text-l
{
display
:
inline-block
;
text-align-last
:
justify
;
width
:
70px
;
color
:
#666666
;
;
color
:
#666666
;
;
}
.w500text
.text-r
{
flex
:
1
.w500text
.text-r
{
flex
:
1
}
.roatImg
{
.roatImg
{
transform
:
rotate
(
180deg
);
}
</
style
>
\ No newline at end of file
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