Commit aa622f7b authored by 罗超's avatar 罗超

1

parent 59da7374
......@@ -221,4 +221,16 @@ export function ForwardStudent(data) {
method: 'post',
data
})
}
/**
* 设置客户状态
* @param {JSON参数} data
*/
export function SetStuStage(data) {
return request({
url: '/User/SetStudentStage',
method: 'post',
data
})
}
\ No newline at end of file
......@@ -4,12 +4,21 @@
<template>
<div>
<div class="row wrap">
<q-btn label="新增" color="accent q-mb-lg" size="sm" @click="isShowAdd=true" />
<q-btn label="取消" style="margin-left:20px;" v-if="isShowAdd" flat color="grey-10 q-mb-lg" size="sm" @click="isShowAdd=false" />
<q-btn label="新增" color="accent q-mb-lg" size="sm" @click="isShowAdd=true" />
<q-btn label="取消" style="margin-left:20px;" v-if="isShowAdd" flat color="grey-10 q-mb-lg" size="sm"
@click="isShowAdd=false" />
</div>
<template v-if="isShowAdd">
<UeEditor v-if="isShowAdd" v-model="flowMsg.Remark" class="q-pb-lg" :config="config"></UeEditor>
<q-btn label="新增" color="accent q-mb-lg" size="md" @click="saveFlow()" />
<UeEditor v-if="isShowAdd" v-model="flowMsg.Remark" class="q-pb-sm" :config="config"></UeEditor>
<div class="row q-mb-lg flex justify-between items-center">
<q-select filled v-model="stuStageId" dense :options="cusStateList" option-label="Name" option-value="Id"
emit-value map-options label="客户状态" class="col-6" />
<div>
<q-btn label="保存" color="accent " size="md" @click="saveFlow()" />
</div>
</div>
</template>
<div style="display:flex;flex:1;flex-direction: column;overflow:hidden;">
<div class="TimeLineDiv">
......@@ -42,7 +51,8 @@
import {
queryStudentFollowPage, //获取到访列表
saveStudentFollow,
deleteStudentFollow
deleteStudentFollow,
SetStuStage
} from '../../../api/customerstudent/customerstudent';
export default {
......@@ -53,6 +63,14 @@
UeEditor
},
props: {
stateId:{
type:Number,
default:0
},
stateList: {
type: Array,
default: () => []
},
saveObj: {
type: Object,
default: null
......@@ -60,22 +78,25 @@
},
data() {
return {
isShowAdd:false,
isShowAdd: false,
config: {
initialFrameWidth: null,
initialFrameHeight: 90
},
flowMsg:{
StuId:0,
Remark:''
flowMsg: {
StuId: 0,
Remark: '',
stuState: 0,
},
msg: {
pageIndex: 1,
pageSize: 12,
StuId: 0
},
dataList:[],
page_Count:0
dataList: [],
page_Count: 0,
stuStageId:0,
cusStateList: [],
}
},
created() {
......@@ -86,12 +107,14 @@
},
mounted() {
this.getList();
this.stuStageId=this.stateId
this.cusStateList = this.stateList;
this.getList();
},
methods: {
//保存跟进
saveFlow() {
if(this.flowMsg.Remark==''){
if (this.flowMsg.Remark == '') {
this.$q.notify({
type: 'negative',
position: "top",
......@@ -115,8 +138,11 @@
}).catch(() => {
})
if(this.stuStageId??0>0){
this.setStuStage()
}
},
getList(){
getList() {
queryStudentFollowPage(this.msg).then(res => {
if (res.Code == 1) {
this.dataList = res.Data.PageData;
......@@ -127,16 +153,16 @@
})
},
//清除
clearMsg(){
this.flowMsg.Remark='';
clearMsg() {
this.flowMsg.Remark = '';
this.isShowAdd = false;
},
changePage(val){
changePage(val) {
this.msg.pageIndex = val;
this.getList();
},
//删除跟进
delFollow(Id){
delFollow(Id) {
let that = this
this.$q.dialog({
title: '提示信息',
......@@ -157,8 +183,17 @@
})
that.getList()
})
}).onCancel(() => {});
}
}).onCancel(() => {});
},
setStuStage(){
const msg={
StuId:this.saveObj.StuId,
StuStage:this.stuStageId,
}
SetStuStage(msg).then(res=>{
this.$emit('update')
})
},
},
}
......
......@@ -328,6 +328,10 @@
},
props: {
stuData:{
type: Object,
default: null
},
saveObj: {
type: Object,
default: null
......@@ -406,13 +410,19 @@
this.getCustomTypeList();
this.getStudentDorpDown();
this.getGetNeedsList();
if (this.saveObj && this.saveObj.StuId > 0) {
this.customMsg.StuId = this.saveObj.StuId;
this.checkMsg.StuId = this.saveObj.StuId;
this.queryStuInfo();
}
},
watch:{
stuData(){
this.init();
}
},
mounted() {},
methods: {
//获取客户需求
getGetNeedsList(){
......@@ -646,12 +656,37 @@
);
});
},
queryStuInfo() {
getStudentInfo({
StuId: this.customMsg.StuId
}).then(res => {
if (res.Code == 1) {
var tempDate = res.Data;
// queryStuInfo() {
// getStudentInfo({
// StuId: this.customMsg.StuId
// }).then(res => {
// if (res.Code == 1) {
// var tempDate = res.Data;
// this.customObj.StuId = tempDate.StuId;
// this.customObj.StuName = tempDate.StuName;
// this.customObj.StuTel = tempDate.StuTel;
// this.customObj.CreateType = tempDate.CreateType;
// this.customObj.StuSourceId = tempDate.StuSourceId;
// this.customObj.StuChannel = tempDate.StuChannel;
// this.customObj.PlatformName = tempDate.PlatformName;
// this.customObj.StuSex = tempDate.StuSex;
// this.customObj.StuBirth = tempDate.StuBirth;
// this.customObj.StuStage = tempDate.StuStage;
// this.customObj.JapanBaseInfo = tempDate.JapanBaseInfo;
// this.customObj.StuProfession = tempDate.StuProfession;
// this.customObj.StuEducation = tempDate.StuEducation;
// this.customObj.StuPurpose = tempDate.StuPurpose;
// this.customObj.CreateBy = tempDate.CreateBy;
// this.customObj.CustomerId = tempDate.CustomerId;
// this.customObj.StuType = tempDate.StuType;
// this.customObj.QQ = tempDate.QQ;
// this.customObj.WeChatNo = tempDate.WeChatNo;
// this.customObj.StuNeeds = tempDate.StuNeeds;
// }
// });
// },
init(){
const tempDate = this.stuData;
this.customObj.StuId = tempDate.StuId;
this.customObj.StuName = tempDate.StuName;
this.customObj.StuTel = tempDate.StuTel;
......@@ -672,8 +707,6 @@
this.customObj.QQ = tempDate.QQ;
this.customObj.WeChatNo = tempDate.WeChatNo;
this.customObj.StuNeeds = tempDate.StuNeeds;
}
});
},
//新增协助人员
addAssist() {
......
......@@ -57,8 +57,8 @@
ref="ClassRoomId" :options="ClassRoomList" label="关联教室" class="col-6 q-pb-lg q-pr-lg"
emit-value map-options />
</div>
<div class="row wrap" style="margin-bottom:10px;">
<q-btn label="新增" color="accent q-mb-lg" size="md" @click="saveAppointForm()" />
<div class="row wrap justify-end q-pr-lg" style="margin-bottom:10px;">
<q-btn label="保存" color="accent q-mb-lg" size="md" @click="saveAppointForm()" />
</div>
</template>
<div style="display:flex;flex:1;flex-direction: column;overflow:hidden;">
......
......@@ -2,14 +2,17 @@
.studentDate .el-input__inner {
background-color: transparent;
border: 0;
height: 28px!important;
height: 28px !important;
}
.studentDate .el-input{
height:28px!important;
.studentDate .el-input {
height: 28px !important;
}
.el-select-dropdown{
z-index:8888!important;
.el-select-dropdown {
z-index: 8888 !important;
}
</style>
<template>
<div>
......@@ -30,7 +33,8 @@
<div class="row warp studentDate">
<q-field filled class="q-pb-lg q-pr-lg" dense>
 <template v-slot:control>
<el-time-select v-model="VisitMsg.VisitTime" size="mini" ref="ClassTime" style="width:230px" :picker-options="{
<el-time-select v-model="VisitMsg.VisitTime" size="mini" ref="ClassTime" style="width:230px"
:picker-options="{
start: '09:00',
step: '00:15',
end: '21:00',
......@@ -40,23 +44,22 @@
</q-field>
<q-field filled class="q-pb-lg" dense>
 <template v-slot:control>
<el-select v-model="VisitMsg.ReceptionPersion" filterable style="width:230px;" size="mini" placeholder="接待人">
<el-option
v-for="item in myEmployeeList"
:key="item.Id"
:label="item.EmployeeName"
:value="item.Id">
<el-select v-model="VisitMsg.ReceptionPersion" filterable style="width:230px;" size="mini"
placeholder="接待人">
<el-option v-for="item in myEmployeeList" :key="item.Id" :label="item.EmployeeName" :value="item.Id">
</el-option>
</el-select>
 </template>
</q-field>
 
</template>
</q-field>
</div>
<div class="row wrap">
<q-input filled v-model="VisitMsg.Remark" dense :rows="3" type="textarea" class="col-12 q-pb-lg q-pr-lg" label="备注">
<q-input filled v-model="VisitMsg.Remark" dense :rows="3" type="textarea" class="col-12 q-pb-lg q-pr-lg"
label="备注">
</q-input>
</div>
<div class="row wrap" style="margin-bottom:10px;">
<div class="row wrap justify-end q-pr-lg" style="margin-bottom:10px;">
<q-btn label="保存" color="accent q-mb-lg" size="md" @click="saveVisit()" />
</div>
</template>
......@@ -97,14 +100,17 @@
<q-banner v-if="isShowEdit">
<div class="row wrap" style="margin-top:10px;width:300px;">
<q-input filled v-model="feedBackMsg.Feedback" :rows="3" type="textarea"
class="col-12 q-pb-lg" label="请输入反馈内容">
class="col-12 q-pb-sm" label="请输入反馈内容">
</q-input>
</div>
<div class="row wrap" style="margin-top:10px;width:300px;">
<q-radio v-model="feedBackMsg.IsVisit" :val="0" label="未到访" />
<q-radio v-model="feedBackMsg.IsVisit" :val="1" label="已到访" />
<div class="row wrap q-col-gutter-sm" style="width:300px;">
<q-select filled v-model="stuStageId" dense :options="cusStateList" option-label="Name"
option-value="Id" emit-value map-options label="客户状态" class="col-6" />
<q-select filled v-model="feedBackMsg.IsVisit" dense :options="VisitList"
emit-value map-options label="是否到访" class="col-6" />
</div>
<div class="row wrap" style="float:right;margin-bottom:10px;">
<div class="row wrap q-my-sm" style="float:right;">
<q-btn label="保存" color="accent" size="sm" @click="SetFeedBack()" />
</div>
</q-banner>
......@@ -132,23 +138,32 @@
<script>
import {
getSchoolDropdown, //获取校区列表
queryStuStageList, //获取客户阶段列表
} from '../../../api/school/index';
import {
queryStudentVisitPage, //获取到访列表
saveStudentVisit,
deleteStudentVisit,
saveStudentVisitFeedback
saveStudentVisitFeedback,
SetStuStage
} from '../../../api/customerstudent/customerstudent';
import {
queryEmployee
} from '../../../api/users/user'
export default {
meta: {
title: ""
},
props: {
stateId:{
type:Number,
default:0
},
stateList: {
type: Array,
default: () => []
},
saveObj: {
type: Object,
default: null
......@@ -182,8 +197,19 @@
feedBackMsg: {
Id: 0, //编号
IsVisit: 0, //到访状态(1-已到访,0-未到访)
Feedback: '' //反馈
Feedback: '', //反馈
},
VisitList:[
{
label:'未到访',
value:0
},{
label:'已到访',
value:1
}
],
stuStageId:0,
cusStateList: [],
}
},
created() {
......@@ -192,11 +218,13 @@
}
},
mounted() {
this.stuStageId=this.stateId
this.cusStateList = this.stateList;
this.getSchool();
this.getEmployeeList();
this.getList();
let userInfo = this.getLocalStorage();
if(userInfo){
if (userInfo) {
this.VisitMsg.ReceptionPersion = parseInt(userInfo.Id);
}
},
......@@ -225,6 +253,9 @@
this.isShowEdit = false;
}
});
if(this.stuStageId??0>0){
this.setStuStage()
}
},
//获取校区列表
getSchool() {
......@@ -260,7 +291,7 @@
//保存数据
saveVisit() {
this.VisitMsg.StuId = this.saveObj.StuId;
if(this.VisitMsg.Date==''){
if (this.VisitMsg.Date == '') {
this.$q.notify({
type: 'negative',
position: "top",
......@@ -269,7 +300,7 @@
})
return;
}
if(this.VisitMsg.VisitTime==''){
if (this.VisitMsg.VisitTime == '') {
this.$q.notify({
type: 'negative',
position: "top",
......@@ -333,7 +364,16 @@
changePage(val) {
this.msg.pageIndex = val;
this.getList();
}
},
setStuStage(){
const msg={
StuId:this.saveObj.StuId,
StuStage:this.stuStageId,
}
SetStuStage(msg).then(res=>{
this.$emit('update')
})
},
},
}
......
......@@ -13,21 +13,18 @@
<q-input filled class="col-6 q-pb-lg q-pr-lg" dense v-model="yueMsg.AppointmentPoint" label="约访地点"></q-input>
<q-field filled class="q-pb-lg" dense>
 <template v-slot:control>
<el-date-picker
v-model="yueMsg.AppointmentTime"
type="datetime"
size="mini"
style="width:228px"
<el-date-picker v-model="yueMsg.AppointmentTime" type="datetime" size="mini" style="width:228px"
placeholder="选择约访日期时间!">
</el-date-picker>
</template>
</q-field>
</div>
<div class="row wrap">
<q-input filled v-model="yueMsg.Remark" dense :rows="3" type="textarea" class="col-12 q-pb-lg q-pr-lg" label="备注">
<q-input filled v-model="yueMsg.Remark" dense :rows="3" type="textarea" class="col-12 q-pb-lg q-pr-lg"
label="备注">
</q-input>
</div>
<div class="row wrap" style="margin-bottom:10px;">
<div class="row wrap justify-end q-pr-lg" style="margin-bottom:10px;">
<q-btn label="保存" color="accent q-mb-lg" size="md" @click="savePoint()" />
</div>
</template>
......@@ -57,8 +54,10 @@
<q-banner v-if="isShowEdit">
<div class="row wrap" style="margin-top:10px;width:300px;">
<q-input filled v-model="feedBackMsg.Feedback" :rows="3" type="textarea"
class="col-12 q-pb-lg" label="请输入反馈内容">
class="col-12 q-pb-sm" label="请输入反馈内容">
</q-input>
<q-select filled v-model="stuStageId" dense :options="cusStateList"
option-label="Name" option-value="Id" emit-value map-options label="客户状态" class="col-12 q-pb-sm" />
</div>
<div class="row wrap" style="float:right;margin-bottom:10px;">
<q-btn label="保存" color="accent" size="sm" @click="SetFeedBack()" />
......@@ -91,7 +90,8 @@
saveStudentAppointment,
queryStudentAppointmentPage,
deleteStudentAppointment,
saveStudentAppointmentFeedBack
saveStudentAppointmentFeedBack,
SetStuStage
} from '../../../api/customerstudent/customerstudent';
export default {
......@@ -102,6 +102,14 @@
},
props: {
stateId:{
type:Number,
default:0
},
stateList: {
type: Array,
default: () => []
},
saveObj: {
type: Object,
default: null
......@@ -125,11 +133,13 @@
//反馈信息
feedBackMsg: {
Id: 0,
Feedback: '' //反馈
Feedback: '', //反馈
},
isShowEdit: false,
dataList: [],
page_Count: 0
page_Count: 0,
cusStateList: [],
stuStageId:0,
}
},
created() {
......@@ -138,6 +148,8 @@
}
},
mounted() {
this.stuStageId=this.stateId
this.cusStateList = this.stateList;
this.getList();
},
methods: {
......@@ -163,11 +175,14 @@
this.isShowEdit = false;
}
});
if(this.stuStageId??0>0){
this.setStuStage()
}
},
//保存约访
savePoint() {
this.yueMsg.StuId = this.saveObj.StuId;
if(this.yueMsg.AppointmentPoint==''){
if (this.yueMsg.AppointmentPoint == '') {
this.$q.notify({
type: 'negative',
position: "top",
......@@ -176,7 +191,7 @@
})
return;
}
if(this.yueMsg.AppointmentTime==''){
if (this.yueMsg.AppointmentTime == '') {
this.$q.notify({
type: 'negative',
position: "top",
......@@ -249,7 +264,16 @@
changePage(val) {
this.msg.pageIndex = val;
this.getList();
}
},
setStuStage(){
const msg={
StuId:this.saveObj.StuId,
StuStage:this.stuStageId,
}
SetStuStage(msg).then(res=>{
this.$emit('update')
})
},
}
}
......
......@@ -30,7 +30,7 @@
</div>
<div class="custom_Bottom">
<div class="detail-info">
<student-left :save-obj="saveObj" @success="refreshStudentPage" @getrecord="getrecord"></student-left>
<student-left :stuData="stuData" :save-obj="saveObj" @success="refreshStudentPage" @getrecord="getrecord"></student-left>
</div>
<div class="detail-travel">
<div class="detail_first">
......@@ -55,10 +55,14 @@
<!-- 操作 -->
<template v-if="ckedTab==2">
<div class="operate_Content" style="margin-top:20px;">
<student-visit :save-obj="baseObj" :StuId="baseObj.StuId" v-if="secondType==1" @success="refreshStudentPage"></student-visit>
<student-yuefang :save-obj="baseObj" v-if="secondType==2" @success="refreshStudentPage"></student-yuefang>
<student-genjin :save-obj="baseObj" v-if="secondType==3" @success="refreshStudentPage"></student-genjin>
<student-shiting :save-obj="baseObj" v-if="secondType==4" @success="refreshStudentPage"></student-shiting>
<student-visit :stateId="stateId" :stateList="customStateList" @update="queryStuInfo" :save-obj="baseObj" :StuId="baseObj.StuId"
v-if="secondType==1" @success="refreshStudentPage"></student-visit>
<student-yuefang :stateId="stateId" :stateList="customStateList" @update="queryStuInfo" :save-obj="baseObj" v-if="secondType==2"
@success="refreshStudentPage"></student-yuefang>
<student-genjin :stateId="stateId" :stateList="customStateList" @update="queryStuInfo" :save-obj="baseObj" v-if="secondType==3"
@success="refreshStudentPage"></student-genjin>
<student-shiting :save-obj="baseObj" v-if="secondType==4" @success="refreshStudentPage">
</student-shiting>
</div>
</template>
<!-- 订单 -->
......@@ -91,7 +95,10 @@
import {
ForwardStudent
} from '../../../api/customerstudent/customerstudent'
import {
getStudentInfo,//获取学员客户信息
queryStuStageList, //获取客户阶段列表
} from '../../../api/school/index';
import studentLeft from '../student/student-left';
import studentRecord from '../student/student-record';
import studentVisit from '../student/student-visit';
......@@ -121,7 +128,7 @@
type: Object,
default: null
},
isJudgeTrans:{
isJudgeTrans: {
type: Number,
default: null
}
......@@ -156,26 +163,32 @@
//员工列表
employeeList: [],
myEmployeeList: [],
isShowTrans: false
isShowTrans: false,
customStateList: [],
stateId:0,
stuData:{},
}
},
created() {
this.getStuStageList()
this.queryStuInfo()
},
mounted() {
this.baseObj = this.saveObj;
this.getEmployeeList();
console.log(this.baseObj,'baseObj');
},
methods: {
//判断是否显示转交
getJudgeTrans(){
getJudgeTrans() {
let userInfo = this.getLocalStorage();
let Id = userInfo.Id;
if(this.isJudgeTrans==1){
if(this.baseObj.CreateBy==Id){
if (this.isJudgeTrans == 1) {
if (this.baseObj.CreateBy == Id) {
return true
}else{
} else {
return false
}
}else{
} else {
return true
}
},
......@@ -224,11 +237,28 @@
})
},
//保存成功后调用记录
getrecord(){
getrecord() {
this.$refs.mychild.getStuLogPage();
}
},
//获取客户阶段列表
getStuStageList() {
queryStuStageList().then(res => {
this.customStateList = res.Data;
})
},
queryStuInfo() {
getStudentInfo({
StuId: this.saveObj.StuId
}).then(res => {
if (res.Code == 1) {
this.stuData=res.Data
this.stateId = res.Data.StuStage;
}
});
},
},
}
</script>
<style>
.custom_RModel {
......@@ -495,18 +525,22 @@
width: 57px;
text-align-last: justify;
}
.Stu_OrderId{
.Stu_OrderId {
color: #2961FE;
font-weight: bold;
text-decoration: underline;
cursor: pointer;
}
.Stu_HtLeft{
width:57px;
.Stu_HtLeft {
width: 57px;
display: inline-block;
text-align-last: justify;
}
.fullscreen{
z-index:3000;
.fullscreen {
z-index: 3000;
}
</style>
\ No newline at end of file
</style>
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