Commit 64353acd authored by 黄奎's avatar 黄奎
parents bbd25345 aa622f7b
...@@ -221,4 +221,16 @@ export function ForwardStudent(data) { ...@@ -221,4 +221,16 @@ export function ForwardStudent(data) {
method: 'post', method: 'post',
data 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 @@ ...@@ -4,12 +4,21 @@
<template> <template>
<div> <div>
<div class="row wrap"> <div class="row wrap">
<q-btn label="新增" color="accent q-mb-lg" size="sm" @click="isShowAdd=true" /> <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="取消" style="margin-left:20px;" v-if="isShowAdd" flat color="grey-10 q-mb-lg" size="sm"
@click="isShowAdd=false" />
</div> </div>
<template v-if="isShowAdd"> <template v-if="isShowAdd">
<UeEditor v-if="isShowAdd" v-model="flowMsg.Remark" class="q-pb-lg" :config="config"></UeEditor> <UeEditor v-if="isShowAdd" v-model="flowMsg.Remark" class="q-pb-sm" :config="config"></UeEditor>
<q-btn label="新增" color="accent q-mb-lg" size="md" @click="saveFlow()" /> <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> </template>
<div style="display:flex;flex:1;flex-direction: column;overflow:hidden;"> <div style="display:flex;flex:1;flex-direction: column;overflow:hidden;">
<div class="TimeLineDiv"> <div class="TimeLineDiv">
...@@ -42,7 +51,8 @@ ...@@ -42,7 +51,8 @@
import { import {
queryStudentFollowPage, //获取到访列表 queryStudentFollowPage, //获取到访列表
saveStudentFollow, saveStudentFollow,
deleteStudentFollow deleteStudentFollow,
SetStuStage
} from '../../../api/customerstudent/customerstudent'; } from '../../../api/customerstudent/customerstudent';
export default { export default {
...@@ -53,6 +63,14 @@ ...@@ -53,6 +63,14 @@
UeEditor UeEditor
}, },
props: { props: {
stateId:{
type:Number,
default:0
},
stateList: {
type: Array,
default: () => []
},
saveObj: { saveObj: {
type: Object, type: Object,
default: null default: null
...@@ -60,22 +78,25 @@ ...@@ -60,22 +78,25 @@
}, },
data() { data() {
return { return {
isShowAdd:false, isShowAdd: false,
config: { config: {
initialFrameWidth: null, initialFrameWidth: null,
initialFrameHeight: 90 initialFrameHeight: 90
}, },
flowMsg:{ flowMsg: {
StuId:0, StuId: 0,
Remark:'' Remark: '',
stuState: 0,
}, },
msg: { msg: {
pageIndex: 1, pageIndex: 1,
pageSize: 12, pageSize: 12,
StuId: 0 StuId: 0
}, },
dataList:[], dataList: [],
page_Count:0 page_Count: 0,
stuStageId:0,
cusStateList: [],
} }
}, },
created() { created() {
...@@ -86,12 +107,14 @@ ...@@ -86,12 +107,14 @@
}, },
mounted() { mounted() {
this.getList(); this.stuStageId=this.stateId
this.cusStateList = this.stateList;
this.getList();
}, },
methods: { methods: {
//保存跟进 //保存跟进
saveFlow() { saveFlow() {
if(this.flowMsg.Remark==''){ if (this.flowMsg.Remark == '') {
this.$q.notify({ this.$q.notify({
type: 'negative', type: 'negative',
position: "top", position: "top",
...@@ -115,8 +138,11 @@ ...@@ -115,8 +138,11 @@
}).catch(() => { }).catch(() => {
}) })
if(this.stuStageId??0>0){
this.setStuStage()
}
}, },
getList(){ getList() {
queryStudentFollowPage(this.msg).then(res => { queryStudentFollowPage(this.msg).then(res => {
if (res.Code == 1) { if (res.Code == 1) {
this.dataList = res.Data.PageData; this.dataList = res.Data.PageData;
...@@ -127,16 +153,16 @@ ...@@ -127,16 +153,16 @@
}) })
}, },
//清除 //清除
clearMsg(){ clearMsg() {
this.flowMsg.Remark=''; this.flowMsg.Remark = '';
this.isShowAdd = false; this.isShowAdd = false;
}, },
changePage(val){ changePage(val) {
this.msg.pageIndex = val; this.msg.pageIndex = val;
this.getList(); this.getList();
}, },
//删除跟进 //删除跟进
delFollow(Id){ delFollow(Id) {
let that = this let that = this
this.$q.dialog({ this.$q.dialog({
title: '提示信息', title: '提示信息',
...@@ -157,8 +183,17 @@ ...@@ -157,8 +183,17 @@
}) })
that.getList() 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 @@ ...@@ -328,6 +328,10 @@
}, },
props: { props: {
stuData:{
type: Object,
default: null
},
saveObj: { saveObj: {
type: Object, type: Object,
default: null default: null
...@@ -406,13 +410,19 @@ ...@@ -406,13 +410,19 @@
this.getCustomTypeList(); this.getCustomTypeList();
this.getStudentDorpDown(); this.getStudentDorpDown();
this.getGetNeedsList(); this.getGetNeedsList();
if (this.saveObj && this.saveObj.StuId > 0) { if (this.saveObj && this.saveObj.StuId > 0) {
this.customMsg.StuId = this.saveObj.StuId; this.customMsg.StuId = this.saveObj.StuId;
this.checkMsg.StuId = this.saveObj.StuId; this.checkMsg.StuId = this.saveObj.StuId;
this.queryStuInfo();
}
},
watch:{
stuData(){
this.init();
} }
}, },
mounted() {},
methods: { methods: {
//获取客户需求 //获取客户需求
getGetNeedsList(){ getGetNeedsList(){
...@@ -646,12 +656,37 @@ ...@@ -646,12 +656,37 @@
); );
}); });
}, },
queryStuInfo() { // queryStuInfo() {
getStudentInfo({ // getStudentInfo({
StuId: this.customMsg.StuId // StuId: this.customMsg.StuId
}).then(res => { // }).then(res => {
if (res.Code == 1) { // if (res.Code == 1) {
var tempDate = res.Data; // 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.StuId = tempDate.StuId;
this.customObj.StuName = tempDate.StuName; this.customObj.StuName = tempDate.StuName;
this.customObj.StuTel = tempDate.StuTel; this.customObj.StuTel = tempDate.StuTel;
...@@ -672,8 +707,6 @@ ...@@ -672,8 +707,6 @@
this.customObj.QQ = tempDate.QQ; this.customObj.QQ = tempDate.QQ;
this.customObj.WeChatNo = tempDate.WeChatNo; this.customObj.WeChatNo = tempDate.WeChatNo;
this.customObj.StuNeeds = tempDate.StuNeeds; this.customObj.StuNeeds = tempDate.StuNeeds;
}
});
}, },
//新增协助人员 //新增协助人员
addAssist() { addAssist() {
......
...@@ -57,8 +57,8 @@ ...@@ -57,8 +57,8 @@
ref="ClassRoomId" :options="ClassRoomList" label="关联教室" class="col-6 q-pb-lg q-pr-lg" ref="ClassRoomId" :options="ClassRoomList" label="关联教室" class="col-6 q-pb-lg q-pr-lg"
emit-value map-options /> emit-value map-options />
</div> </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="saveAppointForm()" /> <q-btn label="保存" color="accent q-mb-lg" size="md" @click="saveAppointForm()" />
</div> </div>
</template> </template>
<div style="display:flex;flex:1;flex-direction: column;overflow:hidden;"> <div style="display:flex;flex:1;flex-direction: column;overflow:hidden;">
......
...@@ -2,14 +2,17 @@ ...@@ -2,14 +2,17 @@
.studentDate .el-input__inner { .studentDate .el-input__inner {
background-color: transparent; background-color: transparent;
border: 0; 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> </style>
<template> <template>
<div> <div>
...@@ -30,7 +33,8 @@ ...@@ -30,7 +33,8 @@
<div class="row warp studentDate"> <div class="row warp studentDate">
<q-field filled class="q-pb-lg q-pr-lg" dense> <q-field filled class="q-pb-lg q-pr-lg" dense>
 <template v-slot:control>  <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', start: '09:00',
step: '00:15', step: '00:15',
end: '21:00', end: '21:00',
...@@ -40,23 +44,22 @@ ...@@ -40,23 +44,22 @@
</q-field> </q-field>
<q-field filled class="q-pb-lg" dense> <q-field filled class="q-pb-lg" dense>
 <template v-slot:control>  <template v-slot:control>
<el-select v-model="VisitMsg.ReceptionPersion" filterable style="width:230px;" size="mini" placeholder="接待人"> <el-select v-model="VisitMsg.ReceptionPersion" filterable style="width:230px;" size="mini"
<el-option placeholder="接待人">
v-for="item in myEmployeeList" <el-option v-for="item in myEmployeeList" :key="item.Id" :label="item.EmployeeName" :value="item.Id">
:key="item.Id"
:label="item.EmployeeName"
:value="item.Id">
</el-option> </el-option>
</el-select> </el-select>
 </template>  
</q-field> </template>
</q-field>
</div> </div>
<div class="row wrap"> <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> </q-input>
</div> </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()" /> <q-btn label="保存" color="accent q-mb-lg" size="md" @click="saveVisit()" />
</div> </div>
</template> </template>
...@@ -97,14 +100,17 @@ ...@@ -97,14 +100,17 @@
<q-banner v-if="isShowEdit"> <q-banner v-if="isShowEdit">
<div class="row wrap" style="margin-top:10px;width:300px;"> <div class="row wrap" style="margin-top:10px;width:300px;">
<q-input filled v-model="feedBackMsg.Feedback" :rows="3" type="textarea" <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-input>
</div> </div>
<div class="row wrap" style="margin-top:10px;width:300px;"> <div class="row wrap q-col-gutter-sm" style="width:300px;">
<q-radio v-model="feedBackMsg.IsVisit" :val="0" label="未到访" /> <q-select filled v-model="stuStageId" dense :options="cusStateList" option-label="Name"
<q-radio v-model="feedBackMsg.IsVisit" :val="1" label="已到访" /> 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>
<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()" /> <q-btn label="保存" color="accent" size="sm" @click="SetFeedBack()" />
</div> </div>
</q-banner> </q-banner>
...@@ -132,23 +138,32 @@ ...@@ -132,23 +138,32 @@
<script> <script>
import { import {
getSchoolDropdown, //获取校区列表 getSchoolDropdown, //获取校区列表
queryStuStageList, //获取客户阶段列表
} from '../../../api/school/index'; } from '../../../api/school/index';
import { import {
queryStudentVisitPage, //获取到访列表 queryStudentVisitPage, //获取到访列表
saveStudentVisit, saveStudentVisit,
deleteStudentVisit, deleteStudentVisit,
saveStudentVisitFeedback saveStudentVisitFeedback,
SetStuStage
} from '../../../api/customerstudent/customerstudent'; } from '../../../api/customerstudent/customerstudent';
import { import {
queryEmployee queryEmployee
} from '../../../api/users/user' } from '../../../api/users/user'
export default { export default {
meta: { meta: {
title: "" title: ""
}, },
props: { props: {
stateId:{
type:Number,
default:0
},
stateList: {
type: Array,
default: () => []
},
saveObj: { saveObj: {
type: Object, type: Object,
default: null default: null
...@@ -182,8 +197,19 @@ ...@@ -182,8 +197,19 @@
feedBackMsg: { feedBackMsg: {
Id: 0, //编号 Id: 0, //编号
IsVisit: 0, //到访状态(1-已到访,0-未到访) IsVisit: 0, //到访状态(1-已到访,0-未到访)
Feedback: '' //反馈 Feedback: '', //反馈
}, },
VisitList:[
{
label:'未到访',
value:0
},{
label:'已到访',
value:1
}
],
stuStageId:0,
cusStateList: [],
} }
}, },
created() { created() {
...@@ -192,11 +218,13 @@ ...@@ -192,11 +218,13 @@
} }
}, },
mounted() { mounted() {
this.stuStageId=this.stateId
this.cusStateList = this.stateList;
this.getSchool(); this.getSchool();
this.getEmployeeList(); this.getEmployeeList();
this.getList(); this.getList();
let userInfo = this.getLocalStorage(); let userInfo = this.getLocalStorage();
if(userInfo){ if (userInfo) {
this.VisitMsg.ReceptionPersion = parseInt(userInfo.Id); this.VisitMsg.ReceptionPersion = parseInt(userInfo.Id);
} }
}, },
...@@ -225,6 +253,9 @@ ...@@ -225,6 +253,9 @@
this.isShowEdit = false; this.isShowEdit = false;
} }
}); });
if(this.stuStageId??0>0){
this.setStuStage()
}
}, },
//获取校区列表 //获取校区列表
getSchool() { getSchool() {
...@@ -260,7 +291,7 @@ ...@@ -260,7 +291,7 @@
//保存数据 //保存数据
saveVisit() { saveVisit() {
this.VisitMsg.StuId = this.saveObj.StuId; this.VisitMsg.StuId = this.saveObj.StuId;
if(this.VisitMsg.Date==''){ if (this.VisitMsg.Date == '') {
this.$q.notify({ this.$q.notify({
type: 'negative', type: 'negative',
position: "top", position: "top",
...@@ -269,7 +300,7 @@ ...@@ -269,7 +300,7 @@
}) })
return; return;
} }
if(this.VisitMsg.VisitTime==''){ if (this.VisitMsg.VisitTime == '') {
this.$q.notify({ this.$q.notify({
type: 'negative', type: 'negative',
position: "top", position: "top",
...@@ -333,7 +364,16 @@ ...@@ -333,7 +364,16 @@
changePage(val) { changePage(val) {
this.msg.pageIndex = val; this.msg.pageIndex = val;
this.getList(); this.getList();
} },
setStuStage(){
const msg={
StuId:this.saveObj.StuId,
StuStage:this.stuStageId,
}
SetStuStage(msg).then(res=>{
this.$emit('update')
})
},
}, },
} }
......
...@@ -13,21 +13,18 @@ ...@@ -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-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> <q-field filled class="q-pb-lg" dense>
 <template v-slot:control>  <template v-slot:control>
<el-date-picker <el-date-picker v-model="yueMsg.AppointmentTime" type="datetime" size="mini" style="width:228px"
v-model="yueMsg.AppointmentTime"
type="datetime"
size="mini"
style="width:228px"
placeholder="选择约访日期时间!"> placeholder="选择约访日期时间!">
</el-date-picker> </el-date-picker>
</template> </template>
</q-field> </q-field>
</div> </div>
<div class="row wrap"> <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> </q-input>
</div> </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()" /> <q-btn label="保存" color="accent q-mb-lg" size="md" @click="savePoint()" />
</div> </div>
</template> </template>
...@@ -57,8 +54,10 @@ ...@@ -57,8 +54,10 @@
<q-banner v-if="isShowEdit"> <q-banner v-if="isShowEdit">
<div class="row wrap" style="margin-top:10px;width:300px;"> <div class="row wrap" style="margin-top:10px;width:300px;">
<q-input filled v-model="feedBackMsg.Feedback" :rows="3" type="textarea" <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-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>
<div class="row wrap" style="float:right;margin-bottom:10px;"> <div class="row wrap" style="float:right;margin-bottom:10px;">
<q-btn label="保存" color="accent" size="sm" @click="SetFeedBack()" /> <q-btn label="保存" color="accent" size="sm" @click="SetFeedBack()" />
...@@ -91,7 +90,8 @@ ...@@ -91,7 +90,8 @@
saveStudentAppointment, saveStudentAppointment,
queryStudentAppointmentPage, queryStudentAppointmentPage,
deleteStudentAppointment, deleteStudentAppointment,
saveStudentAppointmentFeedBack saveStudentAppointmentFeedBack,
SetStuStage
} from '../../../api/customerstudent/customerstudent'; } from '../../../api/customerstudent/customerstudent';
export default { export default {
...@@ -102,6 +102,14 @@ ...@@ -102,6 +102,14 @@
}, },
props: { props: {
stateId:{
type:Number,
default:0
},
stateList: {
type: Array,
default: () => []
},
saveObj: { saveObj: {
type: Object, type: Object,
default: null default: null
...@@ -125,11 +133,13 @@ ...@@ -125,11 +133,13 @@
//反馈信息 //反馈信息
feedBackMsg: { feedBackMsg: {
Id: 0, Id: 0,
Feedback: '' //反馈 Feedback: '', //反馈
}, },
isShowEdit: false, isShowEdit: false,
dataList: [], dataList: [],
page_Count: 0 page_Count: 0,
cusStateList: [],
stuStageId:0,
} }
}, },
created() { created() {
...@@ -138,6 +148,8 @@ ...@@ -138,6 +148,8 @@
} }
}, },
mounted() { mounted() {
this.stuStageId=this.stateId
this.cusStateList = this.stateList;
this.getList(); this.getList();
}, },
methods: { methods: {
...@@ -163,11 +175,14 @@ ...@@ -163,11 +175,14 @@
this.isShowEdit = false; this.isShowEdit = false;
} }
}); });
if(this.stuStageId??0>0){
this.setStuStage()
}
}, },
//保存约访 //保存约访
savePoint() { savePoint() {
this.yueMsg.StuId = this.saveObj.StuId; this.yueMsg.StuId = this.saveObj.StuId;
if(this.yueMsg.AppointmentPoint==''){ if (this.yueMsg.AppointmentPoint == '') {
this.$q.notify({ this.$q.notify({
type: 'negative', type: 'negative',
position: "top", position: "top",
...@@ -176,7 +191,7 @@ ...@@ -176,7 +191,7 @@
}) })
return; return;
} }
if(this.yueMsg.AppointmentTime==''){ if (this.yueMsg.AppointmentTime == '') {
this.$q.notify({ this.$q.notify({
type: 'negative', type: 'negative',
position: "top", position: "top",
...@@ -249,7 +264,16 @@ ...@@ -249,7 +264,16 @@
changePage(val) { changePage(val) {
this.msg.pageIndex = val; this.msg.pageIndex = val;
this.getList(); this.getList();
} },
setStuStage(){
const msg={
StuId:this.saveObj.StuId,
StuStage:this.stuStageId,
}
SetStuStage(msg).then(res=>{
this.$emit('update')
})
},
} }
} }
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
</div> </div>
<div class="custom_Bottom"> <div class="custom_Bottom">
<div class="detail-info"> <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>
<div class="detail-travel"> <div class="detail-travel">
<div class="detail_first"> <div class="detail_first">
...@@ -55,10 +55,14 @@ ...@@ -55,10 +55,14 @@
<!-- 操作 --> <!-- 操作 -->
<template v-if="ckedTab==2"> <template v-if="ckedTab==2">
<div class="operate_Content" style="margin-top:20px;"> <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-visit :stateId="stateId" :stateList="customStateList" @update="queryStuInfo" :save-obj="baseObj" :StuId="baseObj.StuId"
<student-yuefang :save-obj="baseObj" v-if="secondType==2" @success="refreshStudentPage"></student-yuefang> v-if="secondType==1" @success="refreshStudentPage"></student-visit>
<student-genjin :save-obj="baseObj" v-if="secondType==3" @success="refreshStudentPage"></student-genjin> <student-yuefang :stateId="stateId" :stateList="customStateList" @update="queryStuInfo" :save-obj="baseObj" v-if="secondType==2"
<student-shiting :save-obj="baseObj" v-if="secondType==4" @success="refreshStudentPage"></student-shiting> @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> </div>
</template> </template>
<!-- 订单 --> <!-- 订单 -->
...@@ -91,7 +95,10 @@ ...@@ -91,7 +95,10 @@
import { import {
ForwardStudent ForwardStudent
} from '../../../api/customerstudent/customerstudent' } from '../../../api/customerstudent/customerstudent'
import {
getStudentInfo,//获取学员客户信息
queryStuStageList, //获取客户阶段列表
} from '../../../api/school/index';
import studentLeft from '../student/student-left'; import studentLeft from '../student/student-left';
import studentRecord from '../student/student-record'; import studentRecord from '../student/student-record';
import studentVisit from '../student/student-visit'; import studentVisit from '../student/student-visit';
...@@ -121,7 +128,7 @@ ...@@ -121,7 +128,7 @@
type: Object, type: Object,
default: null default: null
}, },
isJudgeTrans:{ isJudgeTrans: {
type: Number, type: Number,
default: null default: null
} }
...@@ -156,26 +163,32 @@ ...@@ -156,26 +163,32 @@
//员工列表 //员工列表
employeeList: [], employeeList: [],
myEmployeeList: [], myEmployeeList: [],
isShowTrans: false isShowTrans: false,
customStateList: [],
stateId:0,
stuData:{},
} }
}, },
created() {
this.getStuStageList()
this.queryStuInfo()
},
mounted() { mounted() {
this.baseObj = this.saveObj; this.baseObj = this.saveObj;
this.getEmployeeList(); this.getEmployeeList();
console.log(this.baseObj,'baseObj');
}, },
methods: { methods: {
//判断是否显示转交 //判断是否显示转交
getJudgeTrans(){ getJudgeTrans() {
let userInfo = this.getLocalStorage(); let userInfo = this.getLocalStorage();
let Id = userInfo.Id; let Id = userInfo.Id;
if(this.isJudgeTrans==1){ if (this.isJudgeTrans == 1) {
if(this.baseObj.CreateBy==Id){ if (this.baseObj.CreateBy == Id) {
return true return true
}else{ } else {
return false return false
} }
}else{ } else {
return true return true
} }
}, },
...@@ -224,11 +237,28 @@ ...@@ -224,11 +237,28 @@
}) })
}, },
//保存成功后调用记录 //保存成功后调用记录
getrecord(){ getrecord() {
this.$refs.mychild.getStuLogPage(); 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> </script>
<style> <style>
.custom_RModel { .custom_RModel {
...@@ -495,18 +525,22 @@ ...@@ -495,18 +525,22 @@
width: 57px; width: 57px;
text-align-last: justify; text-align-last: justify;
} }
.Stu_OrderId{
.Stu_OrderId {
color: #2961FE; color: #2961FE;
font-weight: bold; font-weight: bold;
text-decoration: underline; text-decoration: underline;
cursor: pointer; cursor: pointer;
} }
.Stu_HtLeft{
width:57px; .Stu_HtLeft {
width: 57px;
display: inline-block; display: inline-block;
text-align-last: justify; text-align-last: justify;
} }
.fullscreen{
z-index:3000; .fullscreen {
z-index: 3000;
} }
</style>
\ No newline at end of file </style>
...@@ -32,6 +32,11 @@ ...@@ -32,6 +32,11 @@
.marketRules .singeRowTable tr th { .marketRules .singeRowTable tr th {
border: 1px solid #d2d2d2; border: 1px solid #d2d2d2;
} }
.cycle_Title {
font-size: 20px;
font-weight: 500;
color: #1f2329;
}
</style> </style>
<template> <template>
<div class="page-body marketRules"> <div class="page-body marketRules">
...@@ -39,10 +44,10 @@ ...@@ -39,10 +44,10 @@
<div class="col row wrap q-mr-lg q-col-gutter-md"></div> <div class="col row wrap q-mr-lg q-col-gutter-md"></div>
</div> </div>
<template> <template>
<div>市场顾问提成规则</div> <div class="cycle_Title">市场顾问提成规则</div>
<div <div
class="cm_content" class="cm_content"
style="width: 100%;" style="width: 100%;margin-bottom: 25px;margin-top: 10px;"
v-for=" ( item , index ) in dataList " v-for=" ( item , index ) in dataList "
:key="index" :key="index"
> >
...@@ -54,11 +59,13 @@ ...@@ -54,11 +59,13 @@
v-loading="loading" v-loading="loading"
> >
<tr> <tr>
<th>方案名称</th> <th width="8%">方案名称</th>
<th>类型</th> <th>类型</th>
<th width="200">校区</th>
<th>课程类型</th> <th>课程类型</th>
<th>课程</th> <th width="300">课程</th>
<th>提成方式</th> <th>首次发放比例</th>
<th>课程比例</th>
<th>提成人员</th> <th>提成人员</th>
<th>部门人员</th> <th>部门人员</th>
<th width="100">操作</th> <th width="100">操作</th>
...@@ -73,27 +80,27 @@ ...@@ -73,27 +80,27 @@
<span v-if="item.Type == 3">教师</span> <span v-if="item.Type == 3">教师</span>
</td> </td>
<td> <td>
<span v-if="item.Type == 1">包含</span> <span>{{ item.SchoolName }}</span>
<span v-if="item.Type == 2">不包含</span>
</td> </td>
<td> <td>
<p v-for="( son , sIndex ) in item.CourseList">{{ son.CourseName }}</p> <span v-if="item.CourseType == 1">包含</span>
<span v-if="item.CourseType == 2">不包含</span>
</td> </td>
<td> <td style="padding: 0 10px;">
<span v-if="item.CommissionType == 1">课耗提成</span> <span v-for="( son , sIndex ) in item.CourseList">{{ son.CourseName }}{{item.CourseList.length==sIndex+1?'':'、'}}</span>
<span v-if="item.CommissionType == 2">次月全提</span>
<span v-if="item.CommissionType == 3">课程比例:{{ item.CourseRate + '%' }}</span>
</td> </td>
<td> <td>
<p v-for="( son , sIndex ) in item.EmpList">{{ son.EmployeeName }}</p> <span >{{ item.FirstRate + '%' }}</span>
</td> </td>
<td> <td>
<p v-for="( son , sIndex ) in item.ChildEmpList">{{ son.EmployeeName }}</p> <span >{{ item.CourseRate + '%' }}</span>
</td>
<td style="padding: 0 10px;">
<span v-for="( son , sIndex ) in item.EmpList">{{ son.EmployeeName }}{{item.EmpList.length==sIndex+1?'':'、'}}</span>
</td>
<td style="padding: 0 10px;">
<span v-for="( son , sIndex ) in item.ChildEmpList">{{ son.EmployeeName }}{{item.ChildEmpList.length==sIndex+1?'':'、'}}</span>
</td> </td>
<!-- <td v-for="( son , sIndex ) in item.RateList">{{ son.StartValue }}</td>
<td v-for="( son , sIndex ) in item.RateList">{{ son.EndValue }}</td>
<td v-for="( son , sIndex ) in item.RateList">{{ son.Rate }}</td>-->
<td> <td>
<q-btn <q-btn
flat flat
...@@ -102,7 +109,7 @@ ...@@ -102,7 +109,7 @@
color="accent" color="accent"
style="font-weight:400" style="font-weight:400"
label="编辑" label="编辑"
@click="EditTask(props.row)" @click="EditTask(item)"
/> />
<q-btn <q-btn
flat flat
...@@ -116,27 +123,39 @@ ...@@ -116,27 +123,39 @@
</td> </td>
</tr> </tr>
</table> </table>
<div></div>
<table <table
class="po_content singeRowTable" class="po_content singeRowTable"
style="border:1px solid #E6E6E6;" style="border:1px solid #E6E6E6;"
cellspacing="0" cellspacing="0"
cellpadding="0" cellpadding="0"
v-loading="loading" v-loading="loading"
> >
<tr> <tr>
<th :rowspan="item.RateList.length">业绩比例</th> <th >业绩比例</th>
</tr> </tr>
<tr> </table>
<th <div style="width:100%;overflow-x: auto;">
v-for="( son , sIndex ) in item.RateList" <table
:key="sIndex" class="po_content singeRowTable"
>{{ son.StartValue }}{{ '<业绩<=' }}{{ son.EndValue }}</th> style="border:1px solid #E6E6E6;"
</tr> cellspacing="0"
<tr> cellpadding="0"
<td v-for="( son , sIndex ) in item.RateList" :key="sIndex">{{ son.Rate }}%</td> v-loading="loading"
</tr> >
</table>
<tr>
<th style="min-width: 260px;"
v-for="( son , sIndex ) in item.RateList"
:key="sIndex"
>{{ son.StartValue }}{{ '<业绩<=' }}{{ son.EndValue }}</th>
</tr>
<tr style="width: 1040px;overflow-x: auto;">
<td style="min-width: 260px;" v-for="( son , sIndex ) in item.RateList" :key="sIndex">{{ son.Rate }}%</td>
</tr>
</table>
</div>
</div> </div>
<div <div
v-if="dataList.length == 0" v-if="dataList.length == 0"
...@@ -144,7 +163,7 @@ ...@@ -144,7 +163,7 @@
>暂无数据</div> >暂无数据</div>
<div style="width: 100%;display: flex;justify-content: flex-end;margin-top: 10px;"> <div style="width: 100%;display: flex;justify-content: flex-end;margin-top: 10px;">
<q-btn color="accent" size="sm" icon="add" label="新增规则" @click="AddMsg()" /> <q-btn color="accent" size="sm" icon="add" label="新增规则" @click="AddMsg()" />
<q-btn color="accent" size="sm" label="保存" @click="setMsg()" style="margin-left: 15px;" /> <!-- <q-btn color="accent" size="sm" label="保存" @click="setMsg()" style="margin-left: 15px;" /> -->
</div> </div>
</template> </template>
<marketCommissionfrom <marketCommissionfrom
...@@ -152,6 +171,8 @@ ...@@ -152,6 +171,8 @@
:isAdd="isAdd" :isAdd="isAdd"
:loyeeList='loyeeList' :loyeeList='loyeeList'
:CourseList='CourseList' :CourseList='CourseList'
:SchoolList='SchoolList'
:selectData= 'selectData'
@close="closeForm" @close="closeForm"
@success="refreshList" @success="refreshList"
></marketCommissionfrom> ></marketCommissionfrom>
...@@ -167,7 +188,11 @@ import { ...@@ -167,7 +188,11 @@ import {
} from '../../../api/course/index' } from '../../../api/course/index'
import { import {
getSellAchievementsRuleList, getSellAchievementsRuleList,
setSellAchievementsRule
} from '../../../api/finance/index' } from '../../../api/finance/index'
import {
getSchoolDropdown,
} from '../../../api/school/index'
import marketCommissionfrom from "../../../components/finance/marketCommissionfrom"; import marketCommissionfrom from "../../../components/finance/marketCommissionfrom";
export default { export default {
meta: { meta: {
...@@ -186,6 +211,8 @@ export default { ...@@ -186,6 +211,8 @@ export default {
isAdd: false, isAdd: false,
loyeeList: [],//人员列表 loyeeList: [],//人员列表
CourseList:[],//课程列表 CourseList:[],//课程列表
SchoolList:[],//校区下拉
selectData:{},
} }
}, },
created() { created() {
...@@ -202,6 +229,7 @@ export default { ...@@ -202,6 +229,7 @@ export default {
this.getSellAchievementsRuleList(); //获取规则 this.getSellAchievementsRuleList(); //获取规则
this.getEmployeeList(); this.getEmployeeList();
this.getCourseList();//获取课程下拉 this.getCourseList();//获取课程下拉
this.getSchool();//校区下拉
}, },
methods: { methods: {
...@@ -234,23 +262,51 @@ export default { ...@@ -234,23 +262,51 @@ export default {
} }
}) })
}, },
getSchool() {
getSchoolDropdown({}).then(res => {
if (res.Code == 1) {
this.SchoolList = res.Data;
}
})
},
refreshList(data) { //保存规则
console.log(this.dataList,'datalist')
setSellAchievementsRule(data).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: res.Message,
position: 'top'
})
this.persistent = false;
this.getSellAchievementsRuleList(); //获取规则
preservation() { //保存规则 }
})
}, },
AddMsg() { AddMsg() {//新增
this.selectData = {}
this.persistent = true; this.persistent = true;
this.isAdd = true; this.isAdd = true;
}, },
EditTask(item){//编辑
this.persistent = true;
this.selectData = item
this.isAdd = false;
},
closeForm() { closeForm() {
this.persistent = false; this.persistent = false;
}, },
refreshList() {//成功之后返回
}
}, },
} }
......
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