Commit c1020604 authored by 黄奎's avatar 黄奎

页面修改

parent c415ef3d
<style> <style>
@import "../financial/css/cssReset.css"; @import "../financial/css/cssReset.css";
.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;
} }
.singeRowTable tr th {
border: 1px solid #d2d2d2;
}
.singeRowTable tr th {
border: 1px solid #d2d2d2;
}
</style> </style>
<template> <template>
<div class="page-body marketRules"> <div class="page-body marketRules">
<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-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>
<div class="col-3"> <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>
<div class="col-3"> <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>
<div class="col-3"> <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>
<div class="col-3"> <div class="col-3">
<q-select @input="resetSearch" filled v-model="msg.StuType" dense clearable :options="customTypeList" <q-select @input="resetSearch" filled v-model="msg.StuType" dense clearable :options="customTypeList"
...@@ -49,33 +53,14 @@ ...@@ -49,33 +53,14 @@
:options="BelongTypeList" emit-value map-options label="归属类型" /> :options="BelongTypeList" emit-value map-options label="归属类型" />
</div> </div>
<div class="col-3" v-if="msg.BelongType == 4"> <div class="col-3" v-if="msg.BelongType == 4">
<q-select <q-select @input="resetSearch" dense clearable @filter="filterSubord" use-input filled option-value="Id"
@input="resetSearch" option-label="EmployeeName" v-model="msg.CreateIds" multiple :options="SubordList" emit-value map-options
dense label="我下属的" />
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>
<div class="col-3"> <div class="col-3">
<q-select @input="resetSearch" dense filled option-value="Id" option-label="Name" v-model="msg.Q_EnrollState" <q-select @input="resetSearch" dense filled option-value="Id" option-label="Name" v-model="msg.Q_EnrollState"
:options="FTypeList" emit-value map-options label="报名状态" /> :options="FTypeList" emit-value map-options label="报名状态" />
</div> </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> </div>
<div class="page-search row items-center" v-if="morequery"> <div class="page-search row items-center" v-if="morequery">
...@@ -84,14 +69,10 @@ ...@@ -84,14 +69,10 @@
<q-select @input="resetSearch" dense filled v-model="msg.StuStage" :options="customState" option-label="Name" <q-select @input="resetSearch" dense filled v-model="msg.StuStage" :options="customState" option-label="Name"
option-value="Id" emit-value map-options label="客户状态" clearable /> option-value="Id" emit-value map-options label="客户状态" clearable />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select @input="resetSearch" dense filled option-value="Id" option-label="EmployeeName" v-model="msg.ConsultantId" clearable <q-select @input="resetSearch" dense filled option-value="Id" option-label="EmployeeName"
:options="RoleListData" emit-value map-options label="课程顾问" v-model="msg.ConsultantId" clearable :options="RoleListData" emit-value map-options label="课程顾问" />
/>
</div> </div>
<div class="col-3"> <div class="col-3">
<q-field filled dense> <q-field filled dense>
<template v-slot:control> <template v-slot:control>
...@@ -102,33 +83,29 @@ ...@@ -102,33 +83,29 @@
</q-field> </q-field>
</div> </div>
<div class="col-3"> <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="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="2" label="范围内没有跟进记录" @input='resetSearch' />
</div> </div>
</div> </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;"> <div style="font-weight: bold;">
总人数:{{Count}}人 总人数:{{Count}}人
</div> </div>
<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> <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=""> <img v-show="!morequery" style="width:12px;height:12px" src="../../assets/images/more.png" alt="">
</span> </span>
</div> </div>
</div> </div>
<div class="page-content"> <div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat <q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat
class="sticky-column-table sticky-right-column-table " class="sticky-column-table sticky-right-column-table " :data="dataList" :columns="columns" row-key="StuId">
:data="dataList" :columns="columns" row-key="StuId" >
<template v-slot:body-cell-StuName="props"> <template v-slot:body-cell-StuName="props">
<q-td :props="props"> <q-td :props="props">
<div class="text-blue cursor-pointer" @click="getStuRight(props.row)"> <div class="text-blue cursor-pointer" @click="getStuRight(props.row)">
...@@ -138,7 +115,8 @@ ...@@ -138,7 +115,8 @@
</template> </template>
<template v-slot:body-cell-EnrollState="props"> <template v-slot:body-cell-EnrollState="props">
<q-td :props="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> </q-td>
</template> </template>
<template v-slot:body-cell-PlanPrice="props"> <template v-slot:body-cell-PlanPrice="props">
...@@ -149,62 +127,53 @@ ...@@ -149,62 +127,53 @@
</template> </template>
<template v-slot:body-cell-BaseCondition="props"> <template v-slot:body-cell-BaseCondition="props">
<q-td :props="props" class="w500text"> <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
<div ><span class="w500text-l">需求点:</span> <span class="text-r">{{props.row.DemandPoint?props.row.DemandPoint:'暂无'}}</span></div> class="text-r">{{props.row.BaseCondition?props.row.BaseCondition:'暂无'}}</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
<div ><span class="w500text-l">咨询结果:</span> <span class="text-r">{{props.row.ConsultingResults?props.row.ConsultingResults:'暂无'}}</span></div> 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> </q-td>
</template> </template>
<template v-slot:body-cell-FURemark="props"> <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}} <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>
<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> </q-td>
</template> </template>
<template v-slot:bottom> <template v-slot:bottom>
<q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="PageCount" <q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="PageCount"
:input="true" @input="changePage" /> :input="true" @input="changePage" />
</template> </template>
</q-table> </q-table>
</div> </div>
<studentRight-form v-if="isShowStuRight" :isJudgeTrans="isJudgeTrans" :BelongType="BelongType" :save-obj="stuOption"
<studentRight-form @close="closeStuForm" @success="getList" @reload="getList">
v-if="isShowStuRight"
:isJudgeTrans="isJudgeTrans"
:BelongType="BelongType"
:save-obj="stuOption"
@close="closeStuForm"
@success="getList"
@reload="getList"
>
</studentRight-form> </studentRight-form>
<studentFUForm <studentFUForm v-if="isShowStuFU" :save-obj="stuOption" @close="closeStuForm">
v-if="isShowStuFU"
:save-obj="stuOption"
@close="closeStuForm"
>
</studentFUForm> </studentFUForm>
</div> </div>
</template> </template>
<script> <script>
import {
import {
getStudentConsultPageList, getStudentConsultPageList,
} from '../../api/studyabroad/index'
} from '../../api/studyabroad/index' import {
import { queryEmployee } from "../../api/users/user"; queryEmployee
} from "../../api/users/user";
import { import {
GetStuChannelList, GetStuChannelList,
} from "../../api/sale/sale"; } from "../../api/sale/sale";
import {
import { EduDownLoad
} from "../../api/common/common";
import {
queryStuStageList, queryStuStageList,
GetStudentTypeList, GetStudentTypeList,
GetPersonalDimension GetPersonalDimension
...@@ -212,7 +181,7 @@ import { ...@@ -212,7 +181,7 @@ import {
import studentRightForm from "../../components/school/student/studentRight-form"; import studentRightForm from "../../components/school/student/studentRight-form";
import studentFUForm from "../../components/school/student/studentFu-form"; import studentFUForm from "../../components/school/student/studentFu-form";
export default { export default {
meta: { meta: {
title: "客户咨询" title: "客户咨询"
}, },
...@@ -227,42 +196,83 @@ export default { ...@@ -227,42 +196,83 @@ export default {
pageIndex: 1, pageIndex: 1,
pageSize: 12, pageSize: 12,
rowsPerPage: 12, rowsPerPage: 12,
StuName: "", StuName: "周",
StuRealMobile:'', StuRealMobile: '',
QQ:'', QQ: '',
WeChatNo:'', WeChatNo: '',
StuType:'',//学生类型 StuType: '', //学生类型
StuGuestState:'',//合同状态 StuGuestState: '', //合同状态
BelongType:'1',//归属类型(1-全部,2-我负责的,3-我协同的,4 下属) BelongType: '1', //归属类型(1-全部,2-我负责的,3-我协同的,4 下属)
Q_EnrollState:'2',//报名状态 1已报名 2未成交 0不限 Q_EnrollState: '2', //报名状态 1已报名 2未成交 0不限
IsQueryMyStu:'1',//是否我协助的 1是 2否 IsQueryMyStu: '1', //是否我协助的 1是 2否
CreateIds: [], CreateIds: [],
StuStage:'',//客户状态 StuStage: '', //客户状态
ConsultantId:'',//课程顾问 ConsultantId: '', //课程顾问
SFTime:'', SFTime: '',
EFTime:'', EFTime: '',
Q_FType:'1',//跟进类型 1范围内有跟进记录 2范围内没有跟进记录 Q_FType: '1', //跟进类型 1范围内有跟进记录 2范围内没有跟进记录
StuChannel:'',//渠道 StuChannel: '', //渠道
}, },
loading: false, loading: false,
dataList: [], //列表数据 dataList: [], //列表数据
PageCount:0, PageCount: 0,
customTypeList: [], //客户类型 customTypeList: [], //客户类型
customState: [], customState: [],
isMyStuList:[{Id:'-1',Name:'不限'},{Id:'1',Name:'是'},{Id:'0',Name:'否'},], isMyStuList: [{
FTypeList:[{Id:'0',Name:'不限'},{Id:'1',Name:'已报名'},{Id:'2',Name:'未成交'},], Id: '-1',
BelongTypeList:[{Id:'1',Name:'全部'},{Id:'2',Name:'我负责的'},{Id:'3',Name:'我协同的'},{Id: 4, Name: "我下属的" }], Name: '不限'
hetongList:[{Id:'1',Name:'正常'},{Id:'2',Name:'退学'},{Id:'5',Name:'停课'},{Id:'7',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: [], //日期数组 dateArray: [], //日期数组
morequery:false, morequery: false,
CompanyList:[], CompanyList: [],
allCourseList: [],//课程 allCourseList: [], //课程
myCourseList:[], myCourseList: [],
RoleListData: [], //课程顾问下拉数据 RoleListData: [], //课程顾问下拉数据
StuChannelList: [], //收客渠道 StuChannelList: [], //收客渠道
allStuChannelList: [], //所有收客渠道 allStuChannelList: [], //所有收客渠道
Count:0, Count: 0,
columns: [{ columns: [{
name: "StuName", name: "StuName",
label: "学生", label: "学生",
...@@ -306,14 +316,6 @@ export default { ...@@ -306,14 +316,6 @@ export default {
field: "StuChannelName", field: "StuChannelName",
align: "left" align: "left"
}, },
// {
// name: "CourseName",
// label: "报名课程",
// field: "CourseName",
// align: "left"
// },
{ {
name: "JapanBaseInfo", name: "JapanBaseInfo",
label: "日语基础", label: "日语基础",
...@@ -326,38 +328,33 @@ export default { ...@@ -326,38 +328,33 @@ export default {
field: "PlanPrice", field: "PlanPrice",
align: "left" align: "left"
}, },
{ {
name: "BaseCondition", name: "BaseCondition",
label: "客户情况分析", label: "客户情况分析",
field: "BaseCondition", field: "BaseCondition",
align: "left" align: "left"
}, },
{ {
name: "FURemark", name: "FURemark",
label: "顾问跟进备注", label: "顾问跟进备注",
field: "FURemark", field: "FURemark",
align: "left" align: "left"
}, },
], ],
stuOption: null, stuOption: null,
BelongType: 1, BelongType: 1,
isShowStuRight:false, isShowStuRight: false,
isJudgeTrans:1, isJudgeTrans: 1,
isShowStuFU:false, isShowStuFU: false,
SubordList: [], //我的下属数据 SubordList: [], //我的下属数据
AllSubordList: [] AllSubordList: []
} }
}, },
created() { created() {
let userinfo = this.getLocalStorage(); let userinfo = this.getLocalStorage();
//这个权限和学员跟踪学员的权限一样 //这个权限和学员跟踪学员的权限一样
userinfo.ActionMenuList.map(x=>{//判断权限 userinfo.ActionMenuList.map(x => { //判断权限
if(x.FunctionCode == "studentTracking_look"){//判断是否有保存的权限 if (x.FunctionCode == "studentTracking_look") { //判断是否有保存的权限
this.msg.IsQueryMyStu = 2 this.msg.IsQueryMyStu = 2
return return
} }
...@@ -370,9 +367,21 @@ export default { ...@@ -370,9 +367,21 @@ export default {
this.GetSubordList() this.GetSubordList()
this.getRole() this.getRole()
this.GetStuChannelList(); this.GetStuChannelList();
//this.downLoadStudentConsult();
}, },
methods: { methods: {
//下载客人咨询
downLoadStudentConsult() {
var msg = JSON.parse(JSON.stringify(this.msg));
this.loading = true;
EduDownLoad(
"/StudentStat/DownLoadStudentConsult",
msg,
"客人咨询.xls", res => {
this.loading = false;
}
);
},
//获取收客渠道 //获取收客渠道
GetStuChannelList() { GetStuChannelList() {
GetStuChannelList({}).then(res => { GetStuChannelList({}).then(res => {
...@@ -442,13 +451,13 @@ export default { ...@@ -442,13 +451,13 @@ export default {
msg.SFTime = ""; msg.SFTime = "";
msg.EFTime = ""; msg.EFTime = "";
} }
if(msg.StuType=='' || msg.StuType==null){ if (msg.StuType == '' || msg.StuType == null) {
msg.StuType = 0 msg.StuType = 0
} }
if(msg.StuGuestState=='' || msg.StuGuestState==null){ if (msg.StuGuestState == '' || msg.StuGuestState == null) {
msg.StuGuestState = 0 msg.StuGuestState = 0
} }
if(msg.StuChannel=='' || msg.StuChannel==null){ if (msg.StuChannel == '' || msg.StuChannel == null) {
msg.StuChannel = 0 msg.StuChannel = 0
} }
...@@ -483,7 +492,7 @@ export default { ...@@ -483,7 +492,7 @@ export default {
getStuRight(obj) { getStuRight(obj) {
if (obj) { if (obj) {
this.stuOption = obj; this.stuOption = obj;
this.BelongType = 3;//点击弹出不让修改 this.BelongType = 3; //点击弹出不让修改
} }
this.isShowStuRight = true; this.isShowStuRight = true;
}, },
...@@ -491,7 +500,7 @@ export default { ...@@ -491,7 +500,7 @@ export default {
this.isShowStuRight = false; this.isShowStuRight = false;
this.isShowStuFU = false this.isShowStuFU = false
}, },
lookgengduo(obj){//跟进备注 lookgengduo(obj) { //跟进备注
if (obj) { if (obj) {
this.stuOption = obj; this.stuOption = obj;
this.BelongType = obj.BelongType; this.BelongType = obj.BelongType;
...@@ -502,13 +511,10 @@ export default { ...@@ -502,13 +511,10 @@ export default {
}, },
} }
</script> </script>
<style lang="sass"> <style lang="sass">
@import url('~assets/css/table.sass')
@import url('~assets/css/table.sass')
</style> </style>
<style scoped> <style scoped>
/deep/.el-input__inner, /deep/.el-input__inner,
...@@ -516,26 +522,32 @@ export default { ...@@ -516,26 +522,32 @@ export default {
background-color: transparent; background-color: transparent;
border: none; border: none;
} }
.w500text{
.w500text {
min-width: 500px; min-width: 500px;
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; align-items: flex-start;
} }
.w500text .w500text-l{
.w500text .w500text-l {
display: inline-block; display: inline-block;
text-align-last: justify; text-align-last: justify;
width: 70px; width: 70px;
color: #666666;; color: #666666;
;
} }
.w500text .text-r{
flex:1 .w500text .text-r {
flex: 1
} }
.roatImg{
.roatImg {
transform: rotate(180deg); transform: rotate(180deg);
} }
</style> </style>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment