Commit bb245a36 authored by 黄奎's avatar 黄奎

页面修改

parent d01c14b6
<style> <style>
.info_title { .info_title {
padding: 0 22px; padding: 0 22px;
margin-bottom: 20px; margin-bottom: 20px;
flex-shrink: 0; flex-shrink: 0;
font-size: 16px; font-size: 16px;
font-weight: 700; font-weight: 700;
font-family: Microsoft YaHei, Avenir, Helvetica, Arial, sans-serif !important; font-family: Microsoft YaHei, Avenir, Helvetica, Arial, sans-serif !important;
} }
.customer_info_component { .customer_info_component {
width: 100%; width: 100%;
} }
.customer_info_Stage { .customer_info_Stage {
width: 100%; width: 100%;
padding: 0 7px; padding: 0 7px;
cursor: pointer; cursor: pointer;
...@@ -21,54 +21,54 @@ ...@@ -21,54 +21,54 @@
width: 100%; width: 100%;
padding: 12px 22px; padding: 12px 22px;
justify-content: space-between; justify-content: space-between;
} }
.stage_label { .stage_label {
color: #606266; color: #606266;
flex-shrink: 0; flex-shrink: 0;
width: 65px; width: 65px;
text-align: right; text-align: right;
} }
.stage_value { .stage_value {
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
.info_content { .info_content {
margin-bottom: 30px; margin-bottom: 30px;
} }
.info_item { .info_item {
position: relative; position: relative;
display: flex; display: flex;
padding: 12px 22px; padding: 12px 22px;
align-items: center; align-items: center;
} }
.item_value { .item_value {
flex: 1; flex: 1;
font-size: 14px; font-size: 14px;
word-break: break-all; word-break: break-all;
overflow: hidden; overflow: hidden;
} }
.item_label { .item_label {
color: #606266; color: #606266;
flex-shrink: 0; flex-shrink: 0;
width: 120px; width: 120px;
font-size: 14px; font-size: 14px;
} }
.student_require { .student_require {
color: red; color: red;
} }
.stuHeadImg { .stuHeadImg {
width: 80px; width: 80px;
height: 80px; height: 80px;
position: relative; position: relative;
} }
</style> </style>
<template> <template>
<div> <div>
...@@ -79,19 +79,10 @@ ...@@ -79,19 +79,10 @@
<div class="stage_label">头像</div> <div class="stage_label">头像</div>
<div class="stage_value"> <div class="stage_value">
<div class="stuHeadImg"> <div class="stuHeadImg">
<el-upload <el-upload :before-upload="uploadFile" :multiple="false" action="" :show-file-list="false">
:before-upload="uploadFile"
:multiple="false"
action=""
:show-file-list="false"
>
<q-avatar size="80px" font-size="36px" text-color="white"> <q-avatar size="80px" font-size="36px" text-color="white">
<img :src="customObj.StuIcon" v-if="customObj.StuIcon" /> <img :src="customObj.StuIcon" v-if="customObj.StuIcon" />
<img <img v-else src="../../../assets/images/administration/litheader.png" alt="" />
v-else
src="../../../assets/images/administration/litheader.png"
alt=""
/>
</q-avatar> </q-avatar>
</el-upload> </el-upload>
</div> </div>
...@@ -104,14 +95,7 @@ ...@@ -104,14 +95,7 @@
<span class="student_require">*</span>客户名称 <span class="student_require">*</span>客户名称
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-input <q-input filled v-model="customObj.StuName" style="width:185px;" ref="StuName" dense :disable="noEdit">
filled
v-model="customObj.StuName"
style="width:185px;"
ref="StuName"
dense
:disable="noEdit"
>
</q-input> </q-input>
</div> </div>
</div> </div>
...@@ -122,15 +106,8 @@ ...@@ -122,15 +106,8 @@
客户电话 客户电话
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-input <q-input filled v-model="customObj.StuTel" style="width:185px;"
filled ref="StuRealMobile" :disable="noEdit" dense>
v-model="customObj.formatTel"
style="width:185px;"
@blur="CheckExistsStu(1)"
ref="StuTel"
:disable="noEdit"
dense
>
</q-input> </q-input>
</div> </div>
</div> </div>
...@@ -141,15 +118,8 @@ ...@@ -141,15 +118,8 @@
客户电话 客户电话
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-input <q-input filled v-model="customObj.StuRealMobile" style="width:185px;" @blur="CheckExistsStu(1)"
filled ref="StuRealMobile" :disable="noEdit" dense>
v-model="customObj.StuTel"
style="width:185px;"
@blur="CheckExistsStu(1)"
ref="StuTel"
:disable="noEdit"
dense
>
</q-input> </q-input>
</div> </div>
</div> </div>
...@@ -160,16 +130,8 @@ ...@@ -160,16 +130,8 @@
QQ QQ
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-input <q-input filled v-model="customObj.QQ" style="width:185px;" @blur="CheckExistsStu(2)" :disable="noEdit"
filled @keyup.native="checkInteger(customObj, 'QQ')" ref="QQ" dense></q-input>
v-model="customObj.QQ"
style="width:185px;"
@blur="CheckExistsStu(2)"
:disable="noEdit"
@keyup.native="checkInteger(customObj, 'QQ')"
ref="QQ"
dense
></q-input>
</div> </div>
</div> </div>
</div> </div>
...@@ -179,15 +141,8 @@ ...@@ -179,15 +141,8 @@
微信号 微信号
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-input <q-input filled v-model="customObj.WeChatNo" @blur="CheckExistsStu(3)" style="width:185px;" ref="WeChatNo"
filled :disable="noEdit" dense></q-input>
v-model="customObj.WeChatNo"
@blur="CheckExistsStu(3)"
style="width:185px;"
ref="WeChatNo"
:disable="noEdit"
dense
></q-input>
</div> </div>
</div> </div>
</div> </div>
...@@ -197,19 +152,8 @@ ...@@ -197,19 +152,8 @@
<span class="student_require">*</span>客户状态 <span class="student_require">*</span>客户状态
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-select <q-select filled v-model="customObj.StuStage" dense :options="customState" option-label="Name"
filled :disable="noEdit" style="width:185px;" option-value="Id" emit-value map-options label="客户状态" />
v-model="customObj.StuStage"
dense
:options="customState"
option-label="Name"
:disable="noEdit"
style="width:185px;"
option-value="Id"
emit-value
map-options
label="客户状态"
/>
</div> </div>
</div> </div>
</div> </div>
...@@ -220,21 +164,9 @@ ...@@ -220,21 +164,9 @@
<span class="student_require">*</span>客户来源 <span class="student_require">*</span>客户来源
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-select <q-select filled v-model="customObj.CreateType" @change="clearStuMsg()" style="width:185px;"
filled :disable="noEdit || isHaveOrder" @input="resetStuSource()" dense :options="customFromList"
v-model="customObj.CreateType" option-label="Name" option-value="Id" emit-value map-options label="客户来源" />
@change="clearStuMsg()"
style="width:185px;"
:disable="noEdit || isHaveOrder"
@input="resetStuSource()"
dense
:options="customFromList"
option-label="Name"
option-value="Id"
emit-value
map-options
label="客户来源"
/>
</div> </div>
</div> </div>
</div> </div>
...@@ -244,20 +176,9 @@ ...@@ -244,20 +176,9 @@
<span class="student_require">*</span>介绍人 <span class="student_require">*</span>介绍人
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-select <q-select filled v-model="customObj.StuSourceId" style="width:185px;" dense @filter="filterEmployee"
filled :disable="noEdit || isHaveOrder" use-input :options="myEmployeeList" option-label="EmployeeName"
v-model="customObj.StuSourceId" option-value="Id" emit-value map-options />
style="width:185px;"
dense
@filter="filterEmployee"
:disable="noEdit || isHaveOrder"
use-input
:options="myEmployeeList"
option-label="EmployeeName"
option-value="Id"
emit-value
map-options
/>
</div> </div>
</div> </div>
</div> </div>
...@@ -267,20 +188,9 @@ ...@@ -267,20 +188,9 @@
<span class="student_require">*</span>转介人 <span class="student_require">*</span>转介人
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-select <q-select filled v-model="customObj.StuSourceId" style="width:185px;" use-input @filter="filterStudent"
filled :disable="noEdit || isHaveOrder" dense :options="MyTransListData" option-label="StuName"
v-model="customObj.StuSourceId" option-value="StuId" emit-value map-options />
style="width:185px;"
use-input
@filter="filterStudent"
:disable="noEdit || isHaveOrder"
dense
:options="MyTransListData"
option-label="StuName"
option-value="StuId"
emit-value
map-options
/>
</div> </div>
</div> </div>
</div> </div>
...@@ -290,20 +200,9 @@ ...@@ -290,20 +200,9 @@
<span class="student_require">*</span>收客渠道 <span class="student_require">*</span>收客渠道
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-select <q-select filled v-model="customObj.StuChannel" style="width:185px;" dense :options="StuChannelList"
filled :disable="noEdit || isHaveOrder" option-label="Name" option-value="Id" emit-value map-options use-input
v-model="customObj.StuChannel" @filter="filterStuChannel">
style="width:185px;"
dense
:options="StuChannelList"
:disable="noEdit || isHaveOrder"
option-label="Name"
option-value="Id"
emit-value
map-options
use-input
@filter="filterStuChannel"
>
<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">
...@@ -321,20 +220,9 @@ ...@@ -321,20 +220,9 @@
<span class="student_require">*</span>关联同行 <span class="student_require">*</span>关联同行
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-select <q-select filled v-model="customObj.CustomerId" style="width:185px" dense :options="customList" use-input
filled :disable="noEdit || isHaveOrder" @filter="filterFn" option-label="CustomerName"
v-model="customObj.CustomerId" option-value="CustomerId" emit-value map-options>
style="width:185px"
dense
:options="customList"
use-input
:disable="noEdit || isHaveOrder"
@filter="filterFn"
option-label="CustomerName"
option-value="CustomerId"
emit-value
map-options
>
<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">
...@@ -350,23 +238,13 @@ ...@@ -350,23 +238,13 @@
<div class="info_item" v-if="customObj.StuChannel == 17"> <div class="info_item" v-if="customObj.StuChannel == 17">
<div class="item_label">第三方平台名称</div> <div class="item_label">第三方平台名称</div>
<div class="item_value"> <div class="item_value">
<q-input <q-input filled v-model="customObj.PlatformName" dense :disable="noEdit"></q-input>
filled
v-model="customObj.PlatformName"
dense
:disable="noEdit"
></q-input>
</div> </div>
</div> </div>
<div class="info_item" v-if="customObj.StuChannel == 20"> <div class="info_item" v-if="customObj.StuChannel == 20">
<div class="item_label">其他平台名称</div> <div class="item_label">其他平台名称</div>
<div class="item_value"> <div class="item_value">
<q-input <q-input filled v-model="customObj.PlatformName" dense :disable="noEdit"></q-input>
filled
v-model="customObj.PlatformName"
dense
:disable="noEdit"
></q-input>
</div> </div>
</div> </div>
</template> </template>
...@@ -377,19 +255,8 @@ ...@@ -377,19 +255,8 @@
<span class="student_require">*</span>客户类型 <span class="student_require">*</span>客户类型
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-select <q-select filled v-model="customObj.StuType" style="width:185px" dense :options="customTypeList"
filled :disable="noEdit" option-label="Name" option-value="Id" emit-value map-options label="客户类型" />
v-model="customObj.StuType"
style="width:185px"
dense
:options="customTypeList"
:disable="noEdit"
option-label="Name"
option-value="Id"
emit-value
map-options
label="客户类型"
/>
</div> </div>
</div> </div>
</div> </div>
...@@ -399,19 +266,8 @@ ...@@ -399,19 +266,8 @@
客户需求 客户需求
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-select <q-select filled v-model="customObj.StuNeeds" style="width:185px" dense :options="NeedData"
filled :disable="noEdit" option-label="Name" option-value="Id" emit-value map-options label="客户需求" />
v-model="customObj.StuNeeds"
style="width:185px"
dense
:options="NeedData"
:disable="noEdit"
option-label="Name"
option-value="Id"
emit-value
map-options
label="客户需求"
/>
</div> </div>
</div> </div>
</div> </div>
...@@ -421,18 +277,8 @@ ...@@ -421,18 +277,8 @@
<div class="info_item"> <div class="info_item">
<div class="item_label">性别</div> <div class="item_label">性别</div>
<div class="item_value"> <div class="item_value">
<q-radio <q-radio v-model="customObj.StuSex" :val="0" label="男" :disable="noEdit" />
v-model="customObj.StuSex" <q-radio v-model="customObj.StuSex" :val="1" label="女" :disable="noEdit" />
:val="0"
label="男"
:disable="noEdit"
/>
<q-radio
v-model="customObj.StuSex"
:val="1"
label="女"
:disable="noEdit"
/>
</div> </div>
</div> </div>
<div class="info_item studentDate"> <div class="info_item studentDate">
...@@ -440,14 +286,8 @@ ...@@ -440,14 +286,8 @@
<div class="item_value"> <div class="item_value">
<q-field filled dense> <q-field filled dense>
<template v-slot:control> <template v-slot:control>
<el-date-picker <el-date-picker v-model="customObj.StuBirth" size="mini" style="width:150px" type="date"
v-model="customObj.StuBirth" :disabled="noEdit" placeholder="选择日期">
size="mini"
style="width:150px"
type="date"
:disabled="noEdit"
placeholder="选择日期"
>
</el-date-picker> </el-date-picker>
</template> </template>
</q-field> </q-field>
...@@ -457,60 +297,28 @@ ...@@ -457,60 +297,28 @@
<div class="info_item"> <div class="info_item">
<div class="item_label">日语基础</div> <div class="item_label">日语基础</div>
<div class="item_value"> <div class="item_value">
<q-select <q-select filled v-model="customObj.JapanBaseInfo" dense :options="basicList" option-label="Name"
filled :disable="noEdit" option-value="Id" emit-value map-options />
v-model="customObj.JapanBaseInfo"
dense
:options="basicList"
option-label="Name"
:disable="noEdit"
option-value="Id"
emit-value
map-options
/>
</div> </div>
</div> </div>
<div class="info_item"> <div class="info_item">
<div class="item_label">职业</div> <div class="item_label">职业</div>
<div class="item_value"> <div class="item_value">
<q-input <q-input filled v-model="customObj.StuProfession" dense :disable="noEdit"></q-input>
filled
v-model="customObj.StuProfession"
dense
:disable="noEdit"
></q-input>
</div> </div>
</div> </div>
<div class="info_item"> <div class="info_item">
<div class="item_label">学历</div> <div class="item_label">学历</div>
<div class="item_value"> <div class="item_value">
<q-select <q-select filled v-model="customObj.StuEducation" dense :options="educationList" option-label="Name"
filled :disable="noEdit" option-value="Id" emit-value map-options />
v-model="customObj.StuEducation"
dense
:options="educationList"
option-label="Name"
:disable="noEdit"
option-value="Id"
emit-value
map-options
/>
</div> </div>
</div> </div>
<div class="info_item"> <div class="info_item">
<div class="item_label">学习目的</div> <div class="item_label">学习目的</div>
<div class="item_value"> <div class="item_value">
<q-select <q-select filled v-model="customObj.StuPurpose" dense :options="goalsList" option-label="Name"
filled :disable="noEdit" option-value="Id" emit-value map-options />
v-model="customObj.StuPurpose"
dense
:options="goalsList"
option-label="Name"
:disable="noEdit"
option-value="Id"
emit-value
map-options
/>
</div> </div>
</div> </div>
<!-- <div class="info_item"> <!-- <div class="info_item">
...@@ -521,27 +329,22 @@ ...@@ -521,27 +329,22 @@
</div> </div>
</div> --> </div> -->
<div class="info_item" v-if="!noEdit"> <div class="info_item" v-if="!noEdit">
<q-btn <q-btn color="accent" class="q-mr-md" label="保存" @click="saveStu()" />
color="accent"
class="q-mr-md"
label="保存"
@click="saveStu()"
/>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { import {
getStudentInfo, //获取学员客户信息 getStudentInfo, //获取学员客户信息
queryStuStageList, //获取客户阶段列表 queryStuStageList, //获取客户阶段列表
saveStudent, //保存学员信息 saveStudent, //保存学员信息
GetStudentTypeList, GetStudentTypeList,
getStudentDorpDownList, getStudentDorpDownList,
GetNeedsList GetNeedsList
} from "../../../api/school/index"; } from "../../../api/school/index";
import { import {
getGuestBasicsEnumList, getGuestBasicsEnumList,
getGuestEducationEnumList, getGuestEducationEnumList,
getGuestLearningGoalsEnumList, getGuestLearningGoalsEnumList,
...@@ -549,14 +352,18 @@ import { ...@@ -549,14 +352,18 @@ import {
CreateTypeList, CreateTypeList,
CheckExistsStu, CheckExistsStu,
GetCustomerList GetCustomerList
} from "../../../api/sale/sale"; } from "../../../api/sale/sale";
import { queryEmployee } from "../../../api/users/user"; import {
import { queryEmployee
} from "../../../api/users/user";
import {
queryStuOrderPage //学员订单分页列表 queryStuOrderPage //学员订单分页列表
} from "../../../api/customerstudent/customerstudent"; } from "../../../api/customerstudent/customerstudent";
import { UploadSelfFile } from "../../../api/common/common"; import {
UploadSelfFile
} from "../../../api/common/common";
export default { export default {
meta: { meta: {
title: "学员管理" title: "学员管理"
}, },
...@@ -591,7 +398,7 @@ export default { ...@@ -591,7 +398,7 @@ export default {
StuId: 0, StuId: 0,
StuIcon: "", //学院头像 StuIcon: "", //学院头像
StuName: "", //客户名称 StuName: "", //客户名称
StuTel: "", //客户电话 StuRealMobile: "", //客户电话
CreateType: "", //客户来源 CreateType: "", //客户来源
StuSourceId: "", //介绍人 StuSourceId: "", //介绍人
StuChannel: "", //收客渠道 StuChannel: "", //收客渠道
...@@ -608,7 +415,8 @@ export default { ...@@ -608,7 +415,8 @@ export default {
QQ: "", //qq QQ: "", //qq
WeChatNo: "", //微信号 WeChatNo: "", //微信号
StuType: "", //客户类型 StuType: "", //客户类型
StuNeeds: 0 //客户需求 StuNeeds: 0, //客户需求
StuTel: "", //显示使用
}, },
//日语基础列表 //日语基础列表
basicList: [], basicList: [],
...@@ -630,7 +438,7 @@ export default { ...@@ -630,7 +438,7 @@ export default {
MyTransListData: [], MyTransListData: [],
checkMsg: { checkMsg: {
StuId: 0, StuId: 0,
StuTel: "", StuRealMobile: "",
QQ: "", QQ: "",
WeChatNo: "" WeChatNo: ""
}, },
...@@ -695,7 +503,7 @@ export default { ...@@ -695,7 +503,7 @@ export default {
return; return;
} }
if ( if (
this.customObj.StuTel == "" && this.customObj.StuRealMobile == "" &&
this.customObj.QQ == "" && this.customObj.QQ == "" &&
this.customObj.WeChatNo == "" this.customObj.WeChatNo == ""
) { ) {
...@@ -762,9 +570,9 @@ export default { ...@@ -762,9 +570,9 @@ export default {
}); });
return; return;
} }
if (this.customObj.StuTel != "") { if (this.customObj.StuRealMobile != "") {
var myreg = /^[1][3-9][\d]{9}/; var myreg = /^[1][3-9][\d]{9}/;
if (!myreg.test(this.customObj.StuTel)) { if (!myreg.test(this.customObj.StuRealMobile)) {
this.$q.notify({ this.$q.notify({
type: "negative", type: "negative",
position: "top", position: "top",
...@@ -914,41 +722,13 @@ export default { ...@@ -914,41 +722,13 @@ export default {
); );
}); });
}, },
// 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() { init() {
const tempDate = this.stuData; 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.StuIcon = tempDate.StuIcon; this.customObj.StuIcon = tempDate.StuIcon;
this.customObj.StuTel = tempDate.StuTel; this.customObj.StuRealMobile = tempDate.StuRealMobile;
this.customObj.CreateType = tempDate.CreateType; this.customObj.CreateType = tempDate.CreateType;
this.customObj.StuSourceId = tempDate.StuSourceId; this.customObj.StuSourceId = tempDate.StuSourceId;
this.customObj.StuChannel = tempDate.StuChannel; this.customObj.StuChannel = tempDate.StuChannel;
...@@ -966,19 +746,12 @@ export default { ...@@ -966,19 +746,12 @@ export default {
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;
this.customObj.StuTel=tempDate.StuTel;
if (this.customObj.StuId > 0) { if (this.customObj.StuId > 0) {
this.isHaveOrder = true; this.isHaveOrder = true;
} }
if (this.BelongType == 3) {
this.customObj.formatTel =
this.customObj.StuTel != ""
? this.customObj.StuTel.substring(0, 2) +
"*****" +
this.customObj.StuTel.substring(8, 10)
: "";
} else {
// this.customObj.formatTel = this.customObj.StuTel;
}
}, },
//新增协助人员 //新增协助人员
addAssist() { addAssist() {
...@@ -997,8 +770,8 @@ export default { ...@@ -997,8 +770,8 @@ export default {
//验证手机号 //验证手机号
CheckExistsStu(type) { CheckExistsStu(type) {
if (type == 1) { if (type == 1) {
if (this.customObj.StuTel && this.customObj.StuTel.length == 11) { if (this.customObj.StuRealMobile && this.customObj.StuRealMobile.length == 11) {
this.checkMsg.StuTel = this.customObj.StuTel; this.checkMsg.StuRealMobile = this.customObj.StuRealMobile;
this.checkMsg.QQ = ""; this.checkMsg.QQ = "";
this.checkMsg.WeChatNo = ""; this.checkMsg.WeChatNo = "";
CheckExistsStu(this.checkMsg).then(r => {}); CheckExistsStu(this.checkMsg).then(r => {});
...@@ -1006,7 +779,7 @@ export default { ...@@ -1006,7 +779,7 @@ export default {
} }
if (type == 2) { if (type == 2) {
if (this.customObj.QQ) { if (this.customObj.QQ) {
this.checkMsg.StuTel = ""; this.checkMsg.StuRealMobile = "";
this.checkMsg.QQ = this.customObj.QQ; this.checkMsg.QQ = this.customObj.QQ;
this.checkMsg.WeChatNo = ""; this.checkMsg.WeChatNo = "";
CheckExistsStu(this.checkMsg).then(r => {}); CheckExistsStu(this.checkMsg).then(r => {});
...@@ -1014,7 +787,7 @@ export default { ...@@ -1014,7 +787,7 @@ export default {
} }
if (type == 3) { if (type == 3) {
if (this.customObj.WeChatNo) { if (this.customObj.WeChatNo) {
this.checkMsg.StuTel = ""; this.checkMsg.StuRealMobile = "";
this.checkMsg.QQ = ""; this.checkMsg.QQ = "";
this.checkMsg.WeChatNo = this.customObj.WeChatNo; this.checkMsg.WeChatNo = this.customObj.WeChatNo;
CheckExistsStu(this.checkMsg).then(r => {}); CheckExistsStu(this.checkMsg).then(r => {});
...@@ -1050,11 +823,11 @@ export default { ...@@ -1050,11 +823,11 @@ export default {
}); });
} }
} }
}; };
</script> </script>
<style scoped> <style scoped>
::v-deep .el-input__inner { ::v-deep .el-input__inner {
background: transparent; background: transparent;
border: none; border: none;
} }
</style> </style>
\ No newline at end of file
...@@ -4,278 +4,98 @@ ...@@ -4,278 +4,98 @@
<div class="text-h6">添加客户</div> <div class="text-h6">添加客户</div>
<div style="font-size:12px;" class="text-grey-6 q-my-md">必填资料</div> <div style="font-size:12px;" class="text-grey-6 q-my-md">必填资料</div>
<div class="row q-col-gutter-md"> <div class="row q-col-gutter-md">
<q-input <q-input class="col-6" filled v-model="customObj.StuName" dense label="客户名称"></q-input>
class="col-6" <q-input class="col-6" filled v-model="customObj.StuRealMobile" dense full-mask mask="###########" label="客户电话"
filled @blur="checkStuTel(1)"></q-input>
v-model="customObj.StuName"
dense
label="客户名称"
></q-input>
<q-input
class="col-6"
filled
v-model="customObj.StuTel"
dense
full-mask
mask="###########"
label="客户电话"
@blur="checkStuTel(1)"
></q-input>
</div> </div>
<div class="q-mt-xs row q-col-gutter-md"> <div class="q-mt-xs row q-col-gutter-md">
<q-input <q-input class="col-6" filled v-model="customObj.QQ" dense full-mask mask="###########" label="客户QQ"
class="col-6" @blur="checkStuTel(2)"></q-input>
filled <q-input class="col-6" filled v-model="customObj.WeChatNo" dense full-mask label="客户微信号" @blur="checkStuTel(3)">
v-model="customObj.QQ" </q-input>
dense
full-mask
mask="###########"
label="客户QQ"
@blur="checkStuTel(2)"
></q-input>
<q-input
class="col-6"
filled
v-model="customObj.WeChatNo"
dense
full-mask
label="客户微信号"
@blur="checkStuTel(3)"
></q-input>
</div> </div>
<div class="q-mt-xs row q-col-gutter-md"> <div class="q-mt-xs row q-col-gutter-md">
<q-select <q-select filled v-model="customObj.CreateType" dense :options="customFromList" option-label="Name"
filled option-value="Id" emit-value map-options label="客户来源" behavior="menu" class="col-6" />
v-model="customObj.CreateType" <q-select filled v-model="customObj.StuChannel" v-if="customObj.CreateType==1" label="获客渠道" dense
dense :options="StuChannelList" option-label="Name" option-value="Id" emit-value map-options class="col-6"
:options="customFromList" behavior="menu" />
option-label="Name" <q-select filled v-model="customObj.CustomerId" v-if="customObj.CreateType==2" label="关联同行" dense
option-value="Id" :options="customList" option-label="CustomerName" option-value="CustomerId" emit-value map-options
emit-value class="col-6" behavior="menu" />
map-options <q-select v-if="customObj.CreateType == 3" filled v-model="customObj.StuSourceId" dense @filter="filterEmployee"
label="客户来源" use-input :options="myEmployeeList" option-label="EmployeeName" option-value="Id" emit-value map-options
behavior="menu" label="关联员工" behavior="menu" class="col-6" />
class="col-6" <q-select v-if="customObj.CreateType == 4" filled v-model="customObj.StuSourceId" dense :options="customList"
/> option-label="CustomerName" option-value="CustomerId" emit-value map-options label="转介人" behavior="menu"
<q-select class="col-6" />
filled
v-model="customObj.StuChannel"
v-if="customObj.CreateType==1"
label="获客渠道"
dense
:options="StuChannelList"
option-label="Name"
option-value="Id"
emit-value
map-options
class="col-6"
behavior="menu"
/>
<q-select
filled
v-model="customObj.CustomerId"
v-if="customObj.CreateType==2"
label="关联同行"
dense
:options="customList"
option-label="CustomerName"
option-value="CustomerId"
emit-value
map-options
class="col-6"
behavior="menu"
/>
<q-select
v-if="customObj.CreateType == 3"
filled
v-model="customObj.StuSourceId"
dense
@filter="filterEmployee"
use-input
:options="myEmployeeList"
option-label="EmployeeName"
option-value="Id"
emit-value
map-options
label="关联员工"
behavior="menu"
class="col-6"
/>
<q-select
v-if="customObj.CreateType == 4"
filled
v-model="customObj.StuSourceId"
dense
:options="customList"
option-label="CustomerName"
option-value="CustomerId"
emit-value
map-options
label="转介人"
behavior="menu"
class="col-6"
/>
</div> </div>
<div class="q-mt-xs row q-col-gutter-md"> <div class="q-mt-xs row q-col-gutter-md">
<q-select <q-select filled v-model="customObj.StuType" dense :options="customTypeList" option-label="Name"
filled option-value="Id" emit-value map-options label="客户类型" behavior="menu" class="col-6" />
v-model="customObj.StuType"
dense
:options="customTypeList"
option-label="Name"
option-value="Id"
emit-value
map-options
label="客户类型"
behavior="menu"
class="col-6"
/>
</div> </div>
<div class="q-mt-xs row q-col-gutter-md"> <div class="q-mt-xs row q-col-gutter-md">
<q-input <q-input filled v-model="customObj.PlatformName" :label="customObj.StuChannel == 6 ? '平台名称' : '其他渠道名称'" dense
filled class="col-6" v-if="customObj.CreateType==1&&(customObj.StuChannel == 6 || customObj.StuChannel == 7)">
v-model="customObj.PlatformName" </q-input>
:label="customObj.StuChannel == 6 ? '平台名称' : '其他渠道名称'"
dense
class="col-6"
v-if="customObj.CreateType==1&&(customObj.StuChannel == 6 || customObj.StuChannel == 7)"
></q-input>
</div> </div>
<div style="font-size:12px;" class="text-grey-6 q-my-md">补充资料</div> <div style="font-size:12px;" class="text-grey-6 q-my-md">补充资料</div>
<div class="row q-col-gutter-md"> <div class="row q-col-gutter-md">
<q-field filled label="性别" stack-label class="col-6" dense> <q-field filled label="性别" stack-label class="col-6" dense>
<template v-slot:control> <template v-slot:control>
<el-radio <el-radio v-model="customObj.StuSex" :val="0" label="男" class="q-mr-md"></el-radio>
v-model="customObj.StuSex"
:val="0"
label="男"
class="q-mr-md"
></el-radio>
<el-radio v-model="customObj.StuSex" :val="1" label="女"></el-radio> <el-radio v-model="customObj.StuSex" :val="1" label="女"></el-radio>
</template> </template>
</q-field> </q-field>
<q-field <q-field filled label="出生日期" stack-label class="col-6 cursor-pointer" dense>
filled
label="出生日期"
stack-label
class="col-6 cursor-pointer"
dense
>
<template v-slot:append> <template v-slot:append>
<q-icon name="event"></q-icon> <q-icon name="event"></q-icon>
</template> </template>
<template v-slot:control> <template v-slot:control>
<span>{{ customObj.StuBirth }}</span> <span>{{ customObj.StuBirth }}</span>
<q-popup-proxy <q-popup-proxy ref="qDateProxy1" transition-show="scale" transition-hide="scale">
ref="qDateProxy1" <q-date v-model="customObj.StuBirth" minimal @input="() => $refs.qDateProxy1.hide()" />
transition-show="scale"
transition-hide="scale"
>
<q-date
v-model="customObj.StuBirth"
minimal
@input="() => $refs.qDateProxy1.hide()"
/>
</q-popup-proxy> </q-popup-proxy>
</template> </template>
</q-field> </q-field>
<q-select <q-select filled v-model="customObj.StuStage" dense :options="customState" option-label="Name" option-value="Id"
filled emit-value map-options class="col-6" label="客户阶段" behavior="menu" />
v-model="customObj.StuStage" <q-select filled v-model="customObj.JapanBaseInfo" dense :options="basicList" option-label="Name"
dense option-value="Id" class="col-6" label="日语基础" emit-value map-options behavior="menu" />
:options="customState" <q-input filled v-model="customObj.StuProfession" dense class="col-6" label="职业"></q-input>
option-label="Name" <q-select filled v-model="customObj.StuEducation" dense :options="educationList" option-label="Name"
option-value="Id" option-value="Id" emit-value map-options class="col-6" label="最高学历" behavior="menu" />
emit-value <q-select filled v-model="customObj.StuPurpose" dense :options="goalsList" option-label="Name" option-value="Id"
map-options emit-value map-options class="col-6" label="学习目的" behavior="menu" />
class="col-6"
label="客户阶段"
behavior="menu"
/>
<q-select
filled
v-model="customObj.JapanBaseInfo"
dense
:options="basicList"
option-label="Name"
option-value="Id"
class="col-6"
label="日语基础"
emit-value
map-options
behavior="menu"
/>
<q-input
filled
v-model="customObj.StuProfession"
dense
class="col-6"
label="职业"
></q-input>
<q-select
filled
v-model="customObj.StuEducation"
dense
:options="educationList"
option-label="Name"
option-value="Id"
emit-value
map-options
class="col-6"
label="最高学历"
behavior="menu"
/>
<q-select
filled
v-model="customObj.StuPurpose"
dense
:options="goalsList"
option-label="Name"
option-value="Id"
emit-value
map-options
class="col-6"
label="学习目的"
behavior="menu"
/>
</div> </div>
<q-separator class="q-my-md" /> <q-separator class="q-my-md" />
<div class="text-right q-py-xs"> <div class="text-right q-py-xs">
<q-btn <q-btn flat color="dark" @click="closeForm" class="q-mr-md q-px-xs" label="取消"></q-btn>
flat <q-btn unelevated color="primary" class="q-px-md" label="保存" @click="saveStu"></q-btn>
color="dark"
@click="closeForm"
class="q-mr-md q-px-xs"
label="取消"
></q-btn>
<q-btn
unelevated
color="primary"
class="q-px-md"
label="保存"
@click="saveStu"
></q-btn>
</div> </div>
</q-card> </q-card>
</div> </div>
</template> </template>
<script> <script>
import { import {
getStudentInfo, //获取学员客户信息 getStudentInfo, //获取学员客户信息
queryStuStageList, //获取客户阶段列表 queryStuStageList, //获取客户阶段列表
saveStudent, //保存学员信息 saveStudent, //保存学员信息
GetStudentTypeList GetStudentTypeList
} from "../../../api/school/index"; } from "../../../api/school/index";
import { import {
getGuestBasicsEnumList, getGuestBasicsEnumList,
getGuestEducationEnumList, getGuestEducationEnumList,
getGuestLearningGoalsEnumList, getGuestLearningGoalsEnumList,
GetStuChannelList, GetStuChannelList,
CreateTypeList, CreateTypeList,
GetCustomerList GetCustomerList
} from "../../../api/sale/sale"; } from "../../../api/sale/sale";
import { queryEmployee, queryStudentByTel } from "../../../api/users/user"; import {
export default { queryEmployee,
queryStudentByTel
} from "../../../api/users/user";
export default {
meta: { meta: {
title: "学员管理" title: "学员管理"
}, },
...@@ -295,14 +115,12 @@ export default { ...@@ -295,14 +115,12 @@ export default {
}, },
//客户对象 //客户对象
customObj: { customObj: {
AssistList: [ AssistList: [{
{
Id: 0, //编号 Id: 0, //编号
AssistId: 1, //员工编号 AssistId: 1, //员工编号
AssistType: 1, //类型 AssistType: 1, //类型
StuId: 1 //学员编号 StuId: 1 //学员编号
} }],
],
StuSex: 1 StuSex: 1
}, },
//日语基础列表 //日语基础列表
...@@ -317,8 +135,8 @@ export default { ...@@ -317,8 +135,8 @@ export default {
customFromList: [], customFromList: [],
StuChannelList: [], //收客渠道 StuChannelList: [], //收客渠道
AssistDropList: [], //协助人员 AssistDropList: [], //协助人员
customList:[], customList: [],
customTypeList:[] //客户类型 customTypeList: [] //客户类型
}; };
}, },
created() { created() {
...@@ -348,9 +166,13 @@ export default { ...@@ -348,9 +166,13 @@ export default {
}, },
checkStuTel(type) { checkStuTel(type) {
//验证手机 //验证手机
if(type==1){ if (type == 1) {
if (this.customObj.StuTel && this.customObj.StuTel.length == 11) { if (this.customObj.StuRealMobile && this.customObj.StuRealMobile.length == 11) {
queryStudentByTel({ StuTel: this.customObj.StuTel, QQ:'', WeChatNo:'' }).then(r => { queryStudentByTel({
StuRealMobile: this.customObj.StuRealMobile,
QQ: '',
WeChatNo: ''
}).then(r => {
if (r.Data) { if (r.Data) {
this.$emit("success", r.Data, 1); this.$emit("success", r.Data, 1);
} }
...@@ -358,9 +180,13 @@ export default { ...@@ -358,9 +180,13 @@ export default {
} }
} }
//验证QQ //验证QQ
if(type==2){ if (type == 2) {
if (this.customObj.QQ) { if (this.customObj.QQ) {
queryStudentByTel({ StuTel: '', QQ:this.customObj.QQ , WeChatNo:'' }).then(r => { queryStudentByTel({
StuTel: '',
QQ: this.customObj.QQ,
WeChatNo: ''
}).then(r => {
if (r.Data) { if (r.Data) {
this.$emit("success", r.Data, 1); this.$emit("success", r.Data, 1);
} }
...@@ -368,9 +194,13 @@ export default { ...@@ -368,9 +194,13 @@ export default {
} }
} }
//验证微信 //验证微信
if(type==3){ if (type == 3) {
if (this.customObj.WeChatNo) { if (this.customObj.WeChatNo) {
queryStudentByTel({ StuTel: '', QQ:'' , WeChatNo:this.customObj.WeChatNo }).then(r => { queryStudentByTel({
StuTel: '',
QQ: '',
WeChatNo: this.customObj.WeChatNo
}).then(r => {
if (r.Data) { if (r.Data) {
this.$emit("success", r.Data, 1); this.$emit("success", r.Data, 1);
} }
...@@ -382,7 +212,7 @@ export default { ...@@ -382,7 +212,7 @@ export default {
let msg = ""; let msg = "";
if (!this.customObj.StuName) { if (!this.customObj.StuName) {
msg = "请输入客户名称"; msg = "请输入客户名称";
} else if (!this.customObj.StuTel && !this.customObj.QQ && !this.customObj.WeChatNo) { } else if (!this.customObj.StuRealMobile && !this.customObj.QQ && !this.customObj.WeChatNo) {
msg = "请至少输入一个手机号QQ号微信号"; msg = "请至少输入一个手机号QQ号微信号";
} else if (!this.customObj.CreateType) { } else if (!this.customObj.CreateType) {
msg = "请选择客户来源"; msg = "请选择客户来源";
...@@ -483,7 +313,7 @@ export default { ...@@ -483,7 +313,7 @@ export default {
}) })
}, },
//获取客户类型 //获取客户类型
getCustomTypeList(){ getCustomTypeList() {
GetStudentTypeList().then(res => { GetStudentTypeList().then(res => {
if (res.Code == 1) { if (res.Code == 1) {
this.customTypeList = res.Data; this.customTypeList = res.Data;
...@@ -514,5 +344,5 @@ export default { ...@@ -514,5 +344,5 @@ export default {
this.customObj.AssistList.splice(index, 1); this.customObj.AssistList.splice(index, 1);
} }
} }
}; };
</script> </script>
\ 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