Commit ed6c583e authored by 罗超's avatar 罗超

新增呼叫平台

parent 360f6033
<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,55 +21,54 @@ ...@@ -21,55 +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>
...@@ -80,10 +79,19 @@ ...@@ -80,10 +79,19 @@
<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 :before-upload="uploadFile" :multiple="false" action='' :show-file-list="false"> <el-upload
: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 v-else src="../../../assets/images/administration/litheader.png" alt="" /> <img
v-else
src="../../../assets/images/administration/litheader.png"
alt=""
/>
</q-avatar> </q-avatar>
</el-upload> </el-upload>
</div> </div>
...@@ -96,7 +104,14 @@ ...@@ -96,7 +104,14 @@
<span class="student_require">*</span>客户名称 <span class="student_require">*</span>客户名称
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-input filled v-model="customObj.StuName" style="width:185px;" ref="StuName" dense :disable="noEdit"> <q-input
filled
v-model="customObj.StuName"
style="width:185px;"
ref="StuName"
dense
:disable="noEdit"
>
</q-input> </q-input>
</div> </div>
</div> </div>
...@@ -107,31 +122,53 @@ ...@@ -107,31 +122,53 @@
客户电话 客户电话
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-input filled v-model="customObj.StuTel" style="width:185px;" @blur="CheckExistsStu(1)" ref="StuTel" <q-input
:disable="noEdit" dense> filled
v-model="customObj.formatTel"
style="width:185px;"
@blur="CheckExistsStu(1)"
ref="StuTel"
:disable="noEdit"
dense
>
</q-input> </q-input>
</div> </div>
</div> </div>
</div> </div>
<div class="customer_info_component"> <div class="customer_info_component" v-if="BelongType != 3">
<div class="customer_info_Stage"> <div class="customer_info_Stage">
<div class="stage_label"> <div class="stage_label">
QQ QQ
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-input filled v-model="customObj.QQ" style="width:185px;" @blur="CheckExistsStu(2)" :disable="noEdit" <q-input
@keyup.native="checkInteger(customObj,'QQ')" ref="QQ" dense></q-input> filled
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>
<div class="customer_info_component"> <div class="customer_info_component" v-if="BelongType != 3">
<div class="customer_info_Stage"> <div class="customer_info_Stage">
<div class="stage_label"> <div class="stage_label">
微信号 微信号
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-input filled v-model="customObj.WeChatNo" @blur="CheckExistsStu(3)" style="width:185px;" ref="WeChatNo" <q-input
:disable="noEdit" dense></q-input> filled
v-model="customObj.WeChatNo"
@blur="CheckExistsStu(3)"
style="width:185px;"
ref="WeChatNo"
:disable="noEdit"
dense
></q-input>
</div> </div>
</div> </div>
</div> </div>
...@@ -141,57 +178,113 @@ ...@@ -141,57 +178,113 @@
<span class="student_require">*</span>客户状态 <span class="student_require">*</span>客户状态
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-select filled v-model="customObj.StuStage" dense :options="customState" option-label="Name" <q-select
:disable="noEdit" style="width:185px;" option-value="Id" emit-value map-options label="客户状态" /> filled
</div> v-model="customObj.StuStage"
</div> dense
</div> :options="customState"
<template v-if="BelongType!=3"> option-label="Name"
:disable="noEdit"
style="width:185px;"
option-value="Id"
emit-value
map-options
label="客户状态"
/>
</div>
</div>
</div>
<template v-if="BelongType != 3">
<div class="customer_info_component"> <div class="customer_info_component">
<div class="customer_info_Stage"> <div class="customer_info_Stage">
<div class="stage_label"> <div class="stage_label">
<span class="student_require">*</span>客户来源 <span class="student_require">*</span>客户来源
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-select filled v-model="customObj.CreateType" @change="clearStuMsg()" style="width:185px;" <q-select
:disable="(noEdit || isHaveOrder)" @input="resetStuSource()" dense :options="customFromList" filled
option-label="Name" option-value="Id" emit-value map-options label="客户来源" /> v-model="customObj.CreateType"
</div> @change="clearStuMsg()"
</div> style="width:185px;"
</div> :disable="noEdit || isHaveOrder"
<div class="customer_info_component" v-if="customObj.CreateType==3"> @input="resetStuSource()"
dense
:options="customFromList"
option-label="Name"
option-value="Id"
emit-value
map-options
label="客户来源"
/>
</div>
</div>
</div>
<div class="customer_info_component" v-if="customObj.CreateType == 3">
<div class="customer_info_Stage"> <div class="customer_info_Stage">
<div class="stage_label"> <div class="stage_label">
<span class="student_require">*</span>介绍人 <span class="student_require">*</span>介绍人
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-select filled v-model="customObj.StuSourceId" style="width:185px;" dense @filter="filterEmployee" <q-select
:disable="(noEdit || isHaveOrder)" use-input :options="myEmployeeList" option-label="EmployeeName" filled
option-value="Id" emit-value map-options /> v-model="customObj.StuSourceId"
</div> style="width:185px;"
</div> dense
</div> @filter="filterEmployee"
<div class="customer_info_component" v-if="customObj.CreateType==4"> :disable="noEdit || isHaveOrder"
use-input
:options="myEmployeeList"
option-label="EmployeeName"
option-value="Id"
emit-value
map-options
/>
</div>
</div>
</div>
<div class="customer_info_component" v-if="customObj.CreateType == 4">
<div class="customer_info_Stage"> <div class="customer_info_Stage">
<div class="stage_label"> <div class="stage_label">
<span class="student_require">*</span>转介人 <span class="student_require">*</span>转介人
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-select filled v-model="customObj.StuSourceId" style="width:185px;" use-input @filter="filterStudent" <q-select
:disable="(noEdit || isHaveOrder)" dense :options="MyTransListData" option-label="StuName" filled
option-value="StuId" emit-value map-options /> v-model="customObj.StuSourceId"
</div> style="width:185px;"
</div> use-input
</div> @filter="filterStudent"
<div class="customer_info_component" v-if="customObj.CreateType==1"> :disable="noEdit || isHaveOrder"
dense
:options="MyTransListData"
option-label="StuName"
option-value="StuId"
emit-value
map-options
/>
</div>
</div>
</div>
<div class="customer_info_component" v-if="customObj.CreateType == 1">
<div class="customer_info_Stage"> <div class="customer_info_Stage">
<div class="stage_label"> <div class="stage_label">
<span class="student_require">*</span>收客渠道 <span class="student_require">*</span>收客渠道
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-select filled v-model="customObj.StuChannel" style="width:185px;" dense :options="StuChannelList" <q-select
:disable="(noEdit || isHaveOrder)" option-label="Name" option-value="Id" emit-value map-options filled
use-input @filter="filterStuChannel"> v-model="customObj.StuChannel"
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">
...@@ -203,15 +296,26 @@ ...@@ -203,15 +296,26 @@
</div> </div>
</div> </div>
</div> </div>
<div class="customer_info_component" v-if="customObj.CreateType==2"> <div class="customer_info_component" v-if="customObj.CreateType == 2">
<div class="customer_info_Stage"> <div class="customer_info_Stage">
<div class="stage_label"> <div class="stage_label">
<span class="student_require">*</span>关联同行 <span class="student_require">*</span>关联同行
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-select filled v-model="customObj.CustomerId" style="width:185px" dense :options="customList" use-input <q-select
:disable="(noEdit || isHaveOrder)" @filter="filterFn" option-label="CustomerName" filled
option-value="CustomerId" emit-value map-options> v-model="customObj.CustomerId"
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">
...@@ -223,17 +327,27 @@ ...@@ -223,17 +327,27 @@
</div> </div>
</div> </div>
</div> </div>
<template v-if="customObj.CreateType==1"> <template v-if="customObj.CreateType == 1">
<div class="info_item" v-if="customObj.StuChannel==6"> <div class="info_item" v-if="customObj.StuChannel == 6">
<div class="item_label">第三方平台名称</div> <div class="item_label">第三方平台名称</div>
<div class="item_value"> <div class="item_value">
<q-input filled v-model="customObj.PlatformName" dense :disable="noEdit"></q-input> <q-input
filled
v-model="customObj.PlatformName"
dense
:disable="noEdit"
></q-input>
</div> </div>
</div> </div>
<div class="info_item" v-if="customObj.StuChannel==7"> <div class="info_item" v-if="customObj.StuChannel == 7">
<div class="item_label">其他平台名称</div> <div class="item_label">其他平台名称</div>
<div class="item_value"> <div class="item_value">
<q-input filled v-model="customObj.PlatformName" dense :disable="noEdit"></q-input> <q-input
filled
v-model="customObj.PlatformName"
dense
:disable="noEdit"
></q-input>
</div> </div>
</div> </div>
</template> </template>
...@@ -244,8 +358,19 @@ ...@@ -244,8 +358,19 @@
<span class="student_require">*</span>客户类型 <span class="student_require">*</span>客户类型
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-select filled v-model="customObj.StuType" style="width:185px" dense :options="customTypeList" <q-select
:disable="noEdit" option-label="Name" option-value="Id" emit-value map-options label="客户类型" /> filled
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>
...@@ -255,8 +380,19 @@ ...@@ -255,8 +380,19 @@
客户需求 客户需求
</div> </div>
<div class="stage_value"> <div class="stage_value">
<q-select filled v-model="customObj.StuNeeds" style="width:185px" dense :options="NeedData" <q-select
:disable="noEdit" option-label="Name" option-value="Id" emit-value map-options label="客户需求" /> filled
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>
...@@ -266,17 +402,33 @@ ...@@ -266,17 +402,33 @@
<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 v-model="customObj.StuSex" :val="0" label="男" :disable="noEdit" /> <q-radio
<q-radio v-model="customObj.StuSex" :val="1" label="女" :disable="noEdit" /> v-model="customObj.StuSex"
: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">
<div class="item_label">出生日期</div> <div class="item_label">出生日期</div>
<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 v-model="customObj.StuBirth" size="mini" style="width:150px" type="date" <el-date-picker
:disabled="noEdit" placeholder="选择日期"> v-model="customObj.StuBirth"
size="mini"
style="width:150px"
type="date"
:disabled="noEdit"
placeholder="选择日期"
>
</el-date-picker> </el-date-picker>
</template> </template>
</q-field> </q-field>
...@@ -286,28 +438,60 @@ ...@@ -286,28 +438,60 @@
<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 filled v-model="customObj.JapanBaseInfo" dense :options="basicList" option-label="Name" <q-select
:disable="noEdit" option-value="Id" emit-value map-options /> filled
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 filled v-model="customObj.StuProfession" dense :disable="noEdit"></q-input> <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 filled v-model="customObj.StuEducation" dense :options="educationList" option-label="Name" <q-select
:disable="noEdit" option-value="Id" emit-value map-options /> filled
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 filled v-model="customObj.StuPurpose" dense :options="goalsList" option-label="Name" <q-select
:disable="noEdit" option-value="Id" emit-value map-options /> filled
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">
...@@ -318,22 +502,27 @@ ...@@ -318,22 +502,27 @@
</div> </div>
</div> --> </div> -->
<div class="info_item" v-if="!noEdit"> <div class="info_item" v-if="!noEdit">
<q-btn color="accent" class="q-mr-md" label="保存" @click="saveStu()" /> <q-btn
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,
...@@ -341,25 +530,18 @@ ...@@ -341,25 +530,18 @@
CreateTypeList, CreateTypeList,
CheckExistsStu, CheckExistsStu,
GetCustomerList GetCustomerList
} from '../../../api/sale/sale' } from "../../../api/sale/sale";
import { import { queryEmployee } from "../../../api/users/user";
queryEmployee import {
} from '../../../api/users/user' queryStuOrderPage //学员订单分页列表
import { } from "../../../api/customerstudent/customerstudent";
queryStuOrderPage, //学员订单分页列表 import { UploadSelfFile } from "../../../api/common/common";
} from '../../../api/customerstudent/customerstudent';
import {
UploadSelfFile
} from '../../../api/common/common'
export default { export default {
meta: { meta: {
title: "学员管理" title: "学员管理"
}, },
components: { components: {},
},
props: { props: {
stuData: { stuData: {
type: Object, type: Object,
...@@ -383,30 +565,30 @@ ...@@ -383,30 +565,30 @@
//客户阶段状态列表 //客户阶段状态列表
customState: [], customState: [],
customMsg: { customMsg: {
StuId: 0, StuId: 0
}, },
//客户对象 //客户对象
customObj: { customObj: {
StuId: 0, StuId: 0,
StuIcon: '', //学院头像 StuIcon: "", //学院头像
StuName: '', //客户名称 StuName: "", //客户名称
StuTel: '', //客户电话 StuTel: "", //客户电话
CreateType: '', //客户来源 CreateType: "", //客户来源
StuSourceId: '', //介绍人 StuSourceId: "", //介绍人
StuChannel: '', //收客渠道 StuChannel: "", //收客渠道
PlatformName: '', //平台名称 PlatformName: "", //平台名称
StuSex: 0, //性别 StuSex: 0, //性别
StuBirth: '', //出生日期 StuBirth: "", //出生日期
StuStage: '', //客户阶段状态 StuStage: "", //客户阶段状态
JapanBaseInfo: '', //日语基础 JapanBaseInfo: "", //日语基础
StuProfession: '', //职业 StuProfession: "", //职业
StuEducation: '', //学历 StuEducation: "", //学历
StuPurpose: '', //学习目的 StuPurpose: "", //学习目的
CreateBy: '', //创建人 CreateBy: "", //创建人
CustomerId: 0, //关联同行 CustomerId: 0, //关联同行
QQ: '', //qq QQ: "", //qq
WeChatNo: '', //微信号 WeChatNo: "", //微信号
StuType: '', //客户类型 StuType: "", //客户类型
StuNeeds: 0 //客户需求 StuNeeds: 0 //客户需求
}, },
//日语基础列表 //日语基础列表
...@@ -429,17 +611,16 @@ ...@@ -429,17 +611,16 @@
MyTransListData: [], MyTransListData: [],
checkMsg: { checkMsg: {
StuId: 0, StuId: 0,
StuTel: '', StuTel: "",
QQ: '', QQ: "",
WeChatNo: '' WeChatNo: ""
}, },
NeedData: [], NeedData: [],
noEdit: false, noEdit: false,
isHaveOrder: false isHaveOrder: false
} };
}, },
created() { created() {
this.getStuStageList(); this.getStuStageList();
this.getBasicList(); this.getBasicList();
this.queryGuestEducationEnumList(); this.queryGuestEducationEnumList();
...@@ -456,13 +637,12 @@ ...@@ -456,13 +637,12 @@
this.customMsg.StuId = this.saveObj.StuId; this.customMsg.StuId = this.saveObj.StuId;
this.checkMsg.StuId = this.saveObj.StuId; this.checkMsg.StuId = this.saveObj.StuId;
if (this.saveObj.noEdit && this.saveObj.noEdit == true) { if (this.saveObj.noEdit && this.saveObj.noEdit == true) {
this.noEdit = true this.noEdit = true;
} }
} }
if (this.BelongType == 3) { if (this.BelongType == 3) {
this.noEdit = true this.noEdit = true;
} }
}, },
watch: { watch: {
stuData() { stuData() {
...@@ -483,110 +663,114 @@ ...@@ -483,110 +663,114 @@
if (res.Code == 1) { if (res.Code == 1) {
this.NeedData = res.Data; this.NeedData = res.Data;
} }
}) });
}, },
//保存学员信息 //保存学员信息
saveStu() { saveStu() {
if (this.customObj.StuName == '') { if (this.customObj.StuName == "") {
this.$q.notify({ this.$q.notify({
type: 'negative', type: "negative",
position: "top", position: "top",
message: `请输入客户名称` message: `请输入客户名称`
}) });
return return;
} }
if (this.customObj.StuTel == '' && this.customObj.QQ == '' && this.customObj.WeChatNo == '') { if (
this.customObj.StuTel == "" &&
this.customObj.QQ == "" &&
this.customObj.WeChatNo == ""
) {
this.$q.notify({ this.$q.notify({
type: 'negative', type: "negative",
position: "top", position: "top",
message: `请输入电话QQ微信至少一个` message: `请输入电话QQ微信至少一个`
}) });
return return;
} }
if (this.customObj.CreateType == '') { if (this.customObj.CreateType == "") {
this.$q.notify({ this.$q.notify({
type: 'negative', type: "negative",
position: "top", position: "top",
message: `请选择客户来源` message: `请选择客户来源`
}) });
return return;
} }
if (this.customObj.CreateType == 1 && !this.customObj.StuChannel) { if (this.customObj.CreateType == 1 && !this.customObj.StuChannel) {
this.$q.notify({ this.$q.notify({
type: 'negative', type: "negative",
position: "top", position: "top",
message: `请选择收客渠道` message: `请选择收客渠道`
}) });
return return;
} }
if (this.customObj.CreateType == 2 && !this.customObj.CustomerId) { if (this.customObj.CreateType == 2 && !this.customObj.CustomerId) {
this.$q.notify({ this.$q.notify({
type: 'negative', type: "negative",
position: "top", position: "top",
message: `请选择关联同行` message: `请选择关联同行`
}) });
return return;
} }
if (this.customObj.CreateType == 3 && !this.customObj.StuSourceId) { if (this.customObj.CreateType == 3 && !this.customObj.StuSourceId) {
this.$q.notify({ this.$q.notify({
type: 'negative', type: "negative",
position: "top", position: "top",
message: `请选择介绍人` message: `请选择介绍人`
}) });
return return;
} }
if (this.customObj.CreateType == 4 && !this.customObj.StuSourceId) { if (this.customObj.CreateType == 4 && !this.customObj.StuSourceId) {
this.$q.notify({ this.$q.notify({
type: 'negative', type: "negative",
position: "top", position: "top",
message: `请选择转介人` message: `请选择转介人`
}) });
return return;
} }
if (this.customObj.StuStage == '') { if (this.customObj.StuStage == "") {
this.$q.notify({ this.$q.notify({
type: 'negative', type: "negative",
position: "top", position: "top",
message: `请选择客户状态` message: `请选择客户状态`
}) });
return return;
} }
if (this.customObj.StuType == '') { if (this.customObj.StuType == "") {
this.$q.notify({ this.$q.notify({
type: 'negative', type: "negative",
position: "top", position: "top",
message: `请选择客户类型` message: `请选择客户类型`
}) });
return return;
} }
if (this.customObj.StuTel != '') { if (this.customObj.StuTel != "") {
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.StuTel)) {
this.$q.notify({ this.$q.notify({
type: 'negative', type: "negative",
position: "top", position: "top",
message: `请输入正确的电话号码` message: `请输入正确的电话号码`
}) });
return return;
} }
} }
saveStudent(this.customObj).then(res => { saveStudent(this.customObj).then(res => {
if (res.Code == 1) { if (res.Code == 1) {
this.$q.notify({ this.$q.notify({
icon: 'iconfont icon-chenggong', icon: "iconfont icon-chenggong",
color: 'accent', color: "accent",
timeout: 2000, timeout: 2000,
message: '数据保存成功!', message: "数据保存成功!",
position: 'top' position: "top"
}) });
this.$emit('update'); this.$emit("update");
this.$emit('success'); this.$emit("success");
this.$emit('getrecord'); this.$emit("getrecord");
if (this.AddType == 1) { if (this.AddType == 1) {
this.$emit('close'); this.$emit("close");
} }
} }
}) });
}, },
//获取员工列表 //获取员工列表
getEmployeeList() { getEmployeeList() {
...@@ -595,7 +779,7 @@ ...@@ -595,7 +779,7 @@
}).then(res => { }).then(res => {
this.employeeList = res.Data; this.employeeList = res.Data;
this.myEmployeeList = res.Data; this.myEmployeeList = res.Data;
}) });
}, },
//获取收客渠道 //获取收客渠道
GetStuChannelList() { GetStuChannelList() {
...@@ -604,17 +788,19 @@ ...@@ -604,17 +788,19 @@
this.StuChannelList = res.Data; this.StuChannelList = res.Data;
this.allStuChannelList = res.Data; this.allStuChannelList = res.Data;
} }
}) });
}, },
//筛选渠道 //筛选渠道
filterStuChannel(val, update, ) { filterStuChannel(val, update) {
update(() => { update(() => {
if (val === "") { if (val === "") {
this.StuChannelList = JSON.parse(JSON.stringify(this.allStuChannelList)); this.StuChannelList = JSON.parse(
JSON.stringify(this.allStuChannelList)
);
} else { } else {
const needle = val.toLowerCase(); const needle = val.toLowerCase();
this.StuChannelList = this.allStuChannelList.filter( this.StuChannelList = this.allStuChannelList.filter(
(v) => v.Name.toLowerCase().indexOf(needle) > -1 v => v.Name.toLowerCase().indexOf(needle) > -1
); );
} }
}); });
...@@ -631,7 +817,7 @@ ...@@ -631,7 +817,7 @@
getBasicList() { getBasicList() {
getGuestBasicsEnumList({}).then(res => { getGuestBasicsEnumList({}).then(res => {
this.basicList = res.Data; this.basicList = res.Data;
}) });
}, },
//获取客户来源 //获取客户来源
getCustomFrom() { getCustomFrom() {
...@@ -639,37 +825,37 @@ ...@@ -639,37 +825,37 @@
if (res.Code == 1) { if (res.Code == 1) {
this.customFromList = res.Data; this.customFromList = res.Data;
} }
}) });
}, },
//获取学历列表 //获取学历列表
queryGuestEducationEnumList() { queryGuestEducationEnumList() {
getGuestEducationEnumList({}).then(res => { getGuestEducationEnumList({}).then(res => {
this.educationList = res.Data; this.educationList = res.Data;
}) });
}, },
//获取学习目的列表 //获取学习目的列表
queryGoalsList() { queryGoalsList() {
getGuestLearningGoalsEnumList({}).then(res => { getGuestLearningGoalsEnumList({}).then(res => {
this.goalsList = res.Data; this.goalsList = res.Data;
}) });
}, },
//获取客户阶段列表 //获取客户阶段列表
getStuStageList() { getStuStageList() {
queryStuStageList().then(res => { queryStuStageList().then(res => {
this.customState = res.Data; this.customState = res.Data;
}) });
}, },
//获取客户下拉数据 //获取客户下拉数据
GetCustomerList() { GetCustomerList() {
let msg = { let msg = {
QCreateBy: 0 QCreateBy: 0
} };
GetCustomerList(msg).then(res => { GetCustomerList(msg).then(res => {
if (res.Code == 1) { if (res.Code == 1) {
this.customList = res.Data; this.customList = res.Data;
this.allCustomList = res.Data; this.allCustomList = res.Data;
} }
}) });
}, },
//筛选客户 //筛选客户
filterFn(val, update) { filterFn(val, update) {
...@@ -679,7 +865,7 @@ ...@@ -679,7 +865,7 @@
} else { } else {
const needle = val.toLowerCase(); const needle = val.toLowerCase();
this.customList = this.allCustomList.filter( this.customList = this.allCustomList.filter(
(v) => v.CustomerName.toLowerCase().indexOf(needle) > -1 v => v.CustomerName.toLowerCase().indexOf(needle) > -1
); );
} }
}); });
...@@ -690,7 +876,7 @@ ...@@ -690,7 +876,7 @@
if (res.Code == 1) { if (res.Code == 1) {
this.customTypeList = res.Data; this.customTypeList = res.Data;
} }
}) });
}, },
//获取转介人下拉 //获取转介人下拉
getStudentDorpDown() { getStudentDorpDown() {
...@@ -699,7 +885,7 @@ ...@@ -699,7 +885,7 @@
this.TransListData = res.Data; this.TransListData = res.Data;
this.MyTransListData = res.Data; this.MyTransListData = res.Data;
} }
}) });
}, },
//筛选转介人 //筛选转介人
filterStudent(val, update, abort) { filterStudent(val, update, abort) {
...@@ -762,7 +948,17 @@ ...@@ -762,7 +948,17 @@
this.customObj.WeChatNo = tempDate.WeChatNo; this.customObj.WeChatNo = tempDate.WeChatNo;
this.customObj.StuNeeds = tempDate.StuNeeds; this.customObj.StuNeeds = tempDate.StuNeeds;
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.indexOf(0, 2) +
"*****" +
this.customObj.StuTel.indexOf(8, 10)
: "";
} else {
this.customObj.formatTel = this.customObj.StuTel;
} }
}, },
//新增协助人员 //新增协助人员
...@@ -771,8 +967,8 @@ ...@@ -771,8 +967,8 @@
Id: 0, //编号 Id: 0, //编号
AssistId: 1, //员工编号 AssistId: 1, //员工编号
AssistType: 1, //类型 AssistType: 1, //类型
StuId: 1, //学员编号 StuId: 1 //学员编号
} };
this.customObj.AssistList.push(obj); this.customObj.AssistList.push(obj);
}, },
//删除协助人员 //删除协助人员
...@@ -783,24 +979,24 @@ ...@@ -783,24 +979,24 @@
CheckExistsStu(type) { CheckExistsStu(type) {
if (type == 1) { if (type == 1) {
if (this.customObj.StuTel && this.customObj.StuTel.length == 11) { if (this.customObj.StuTel && this.customObj.StuTel.length == 11) {
this.checkMsg.StuTel = this.customObj.StuTel this.checkMsg.StuTel = this.customObj.StuTel;
this.checkMsg.QQ = ''; this.checkMsg.QQ = "";
this.checkMsg.WeChatNo = ''; this.checkMsg.WeChatNo = "";
CheckExistsStu(this.checkMsg).then(r => {}); CheckExistsStu(this.checkMsg).then(r => {});
} }
} }
if (type == 2) { if (type == 2) {
if (this.customObj.QQ) { if (this.customObj.QQ) {
this.checkMsg.StuTel = ''; this.checkMsg.StuTel = "";
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 => {});
} }
} }
if (type == 3) { if (type == 3) {
if (this.customObj.WeChatNo) { if (this.customObj.WeChatNo) {
this.checkMsg.StuTel = '' this.checkMsg.StuTel = "";
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 => {});
} }
...@@ -808,17 +1004,17 @@ ...@@ -808,17 +1004,17 @@
}, },
//切换客户来源重置 //切换客户来源重置
resetStuSource() { resetStuSource() {
this.customObj.StuChannel = ''; this.customObj.StuChannel = "";
this.customObj.CustomerId = ''; this.customObj.CustomerId = "";
this.customObj.StuSourceId = ''; this.customObj.StuSourceId = "";
this.customObj.PlatformName = ''; this.customObj.PlatformName = "";
}, },
getStuOrderPage() { getStuOrderPage() {
let customMsg = { let customMsg = {
pageIndex: 1, pageIndex: 1,
pageSize: 10, pageSize: 10,
StuId: 0 StuId: 0
} };
if (this.saveObj) { if (this.saveObj) {
customMsg.StuId = this.saveObj.StuId; customMsg.StuId = this.saveObj.StuId;
} }
...@@ -833,16 +1029,13 @@ ...@@ -833,16 +1029,13 @@
} }
} }
}); });
},
} }
} }
};
</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>
<template> <template>
<q-dialog v-model="persistent" full-height maximized position="right" persistent @hide="closeCutomer" <q-dialog
transition-show="slide-left"> v-model="persistent"
full-height
maximized
position="right"
persistent
@hide="closeCutomer"
transition-show="slide-left"
>
<div class="customMain"> <div class="customMain">
<div class="custom_Top"> <div class="custom_Top">
<div class="custom_HLeft"> <div class="custom_HLeft">
<div class="nameplate_avatar"> <div class="nameplate_avatar">
<img v-if="baseObj.StuIcon" style="width:100%;height:100%;" :src="baseObj.StuIcon" alt /> <img
v-if="baseObj.StuIcon"
style="width:100%;height:100%;"
:src="baseObj.StuIcon"
alt
/>
<div class="student_Name" v-else> <div class="student_Name" v-else>
<span v-if="baseObj.StuName">{{baseObj.StuName.substring(0,1)}}</span> <span v-if="baseObj.StuName">{{
baseObj.StuName.substring(0, 1)
}}</span>
</div> </div>
</div> </div>
<div class="Name_List"> <div class="Name_List">
<div class="F_16">{{baseObj.StuName}}</div> <div class="F_16">{{ baseObj.StuName }}</div>
</div> </div>
</div> </div>
<div class="custom_HRight" v-if="getJudgeTrans()"> <div class="custom_HRight">
<q-btn color="primary" size="sm" label="转交" @click="isShowTrans=true"> <q-btn
v-if="userInfo.IsTenCccUser == 1"
@click="callUserHandler"
class="q-mr-md"
round
unelevated
color="primary"
dense
icon="phone"
title="拨打电话"
></q-btn>
<q-btn
v-if="getJudgeTrans()"
color="primary"
unelevated
size="sm"
label="转交"
@click="isShowTrans = true"
>
<q-popup-proxy :offset="[10, 10]"> <q-popup-proxy :offset="[10, 10]">
<q-banner v-if="isShowTrans"> <q-banner v-if="isShowTrans">
<q-select style="margin-top:20px;" filled v-model="transMsg.CreateBy" @filter="filterEmployee" use-input <q-select
:options="myEmployeeList" option-label="EmployeeName" option-value="Id" emit-value map-options /> style="margin-top:20px;"
<q-btn label="保存" style="float:right;margin-top:15px" color="accent q-mb-lg" size="sm" filled
@click="saveTransForm" /> v-model="transMsg.CreateBy"
@filter="filterEmployee"
use-input
:options="myEmployeeList"
option-label="EmployeeName"
option-value="Id"
emit-value
map-options
/>
<q-btn
label="保存"
style="float:right;margin-top:15px"
color="accent q-mb-lg"
size="sm"
@click="saveTransForm"
/>
</q-banner> </q-banner>
</q-popup-proxy> </q-popup-proxy>
</q-btn> </q-btn>
...@@ -29,11 +76,24 @@ ...@@ -29,11 +76,24 @@
</div> </div>
<div class="custom_Bottom"> <div class="custom_Bottom">
<div class="detail-info"> <div class="detail-info">
<student-left :stuData="stuData" :save-obj="saveObj" :BelongType="BelongType" @success="refreshStudentPage" @getrecord="getrecord" @update="queryStuInfo"></student-left> <student-left
:stuData="stuData"
:save-obj="saveObj"
:BelongType="BelongType"
@success="refreshStudentPage"
@getrecord="getrecord"
@update="queryStuInfo"
></student-left>
</div> </div>
<div class="detail-travel"> <div class="detail-travel">
<div class="detail_first"> <div class="detail_first">
<q-tabs v-model="ckedTab" dense align="left" class="text-teal" style="margin-bottom:20px;"> <q-tabs
v-model="ckedTab"
dense
align="left"
class="text-teal"
style="margin-bottom:20px;"
>
<q-tab name="1" label="记录" /> <q-tab name="1" label="记录" />
<q-tab name="2" label="操作" /> <q-tab name="2" label="操作" />
<q-tab name="3" label="订单" /> <q-tab name="3" label="订单" />
...@@ -42,38 +102,84 @@ ...@@ -42,38 +102,84 @@
</q-tabs> </q-tabs>
<div class="operate_Content" style="flex:1;"> <div class="operate_Content" style="flex:1;">
<div class="detail_Main"> <div class="detail_Main">
<div class="tripTypeContent" style="flex-shrink:0" v-if="ckedTab==2"> <div
<div v-for="(qItem,qIndex) in visitList" :key="qIndex" class="tripTypeContent"
:class="{ 'StuCkedType': qIndex+1 == secondType }" @click="getckedType(qItem)">{{ qItem.Name }} style="flex-shrink:0"
v-if="ckedTab == 2"
>
<div
v-for="(qItem, qIndex) in visitList"
:key="qIndex"
:class="{ StuCkedType: qIndex + 1 == secondType }"
@click="getckedType(qItem)"
>
{{ qItem.Name }}
</div> </div>
</div> </div>
<!-- 记录 --> <!-- 记录 -->
<template v-if="ckedTab==1"> <template v-if="ckedTab == 1">
<student-record :save-obj="baseObj" @success="refreshStudentPage" ref="mychild"></student-record> <student-record
:save-obj="baseObj"
@success="refreshStudentPage"
ref="mychild"
></student-record>
</template> </template>
<!-- 操作 --> <!-- 操作 -->
<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 :stateId="stateId" :stateList="customStateList" @update="queryStuInfo" :save-obj="baseObj" :StuId="baseObj.StuId" <student-visit
v-if="secondType==1" @success="refreshStudentPage"></student-visit> :stateId="stateId"
<student-yuefang :stateId="stateId" :stateList="customStateList" @update="queryStuInfo" :save-obj="baseObj" v-if="secondType==2" :stateList="customStateList"
@success="refreshStudentPage"></student-yuefang> @update="queryStuInfo"
<student-genjin :stateId="stateId" :stateList="customStateList" @update="queryStuInfo" :save-obj="baseObj" v-if="secondType==3" :save-obj="baseObj"
@success="refreshStudentPage"></student-genjin> :StuId="baseObj.StuId"
<student-shiting :save-obj="baseObj" v-if="secondType==4" @success="refreshStudentPage"> 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> </student-shiting>
</div> </div>
</template> </template>
<!-- 订单 --> <!-- 订单 -->
<template v-if="ckedTab==3"> <template v-if="ckedTab == 3">
<student-order :save-obj="baseObj" @success="refreshStudentPage"></student-order> <student-order
:save-obj="baseObj"
@success="refreshStudentPage"
></student-order>
</template> </template>
<!-- 合同 --> <!-- 合同 -->
<template v-if="ckedTab==4"> <template v-if="ckedTab == 4">
<student-hetong :save-obj="baseObj" @success="refreshStudentPage"></student-hetong> <student-hetong
:save-obj="baseObj"
@success="refreshStudentPage"
></student-hetong>
</template> </template>
<template v-if="ckedTab==5"> <template v-if="ckedTab == 5">
<student-Assit :save-obj="baseObj" :BelongType="BelongType" @success="refreshStudentPage"></student-Assit> <student-Assit
:save-obj="baseObj"
:BelongType="BelongType"
@success="refreshStudentPage"
></student-Assit>
</template> </template>
</div> </div>
</div> </div>
...@@ -85,29 +191,24 @@ ...@@ -85,29 +191,24 @@
</div> </div>
</div> </div>
</q-dialog> </q-dialog>
</template> </template>
<script> <script>
import { import { queryEmployee } from "../../../api/users/user";
queryEmployee import { ForwardStudent } from "../../../api/customerstudent/customerstudent";
} from '../../../api/users/user' import {
import { getStudentInfo, //获取学员客户信息
ForwardStudent queryStuStageList //获取客户阶段列表
} from '../../../api/customerstudent/customerstudent' } from "../../../api/school/index";
import { import studentLeft from "../student/student-left";
getStudentInfo,//获取学员客户信息 import studentRecord from "../student/student-record";
queryStuStageList, //获取客户阶段列表 import studentVisit from "../student/student-visit";
} from '../../../api/school/index'; import studentYuefang from "../student/student-yuefang";
import studentLeft from '../student/student-left'; import studentGenjin from "../student/student-genjin";
import studentRecord from '../student/student-record'; import studentShiting from "../student/student-shiting";
import studentVisit from '../student/student-visit'; import studentHetong from "../student/student-hetong";
import studentYuefang from '../student/student-yuefang'; import studentOrder from "../student/student-order";
import studentGenjin from '../student/student-genjin'; import studentAssit from "../student/student-Assit";
import studentShiting from '../student/student-shiting'; export default {
import studentHetong from '../student/student-hetong';
import studentOrder from '../student/student-order';
import studentAssit from '../student/student-Assit';
export default {
meta: { meta: {
title: "学员管理" title: "学员管理"
}, },
...@@ -139,68 +240,79 @@ ...@@ -139,68 +240,79 @@
data() { data() {
return { return {
persistent: true, persistent: true,
ckedTab: '1', ckedTab: "1",
secondType: 1, secondType: 1,
visitList: [{ visitList: [
Name: '到访', {
Name: "到访",
Id: 1 Id: 1
}, { },
Name: '约访', {
Name: "约访",
Id: 2 Id: 2
}, { },
Name: '跟进', {
Name: "跟进",
Id: 3 Id: 3
}, { },
Name: '试听', {
Name: "试听",
Id: 4 Id: 4
}], }
],
msg: {
}, msg: {},
baseObj: {}, baseObj: {},
transMsg: { transMsg: {
StuId: 1, StuId: 1,
CreateBy: '' CreateBy: ""
}, },
//员工列表 //员工列表
employeeList: [], employeeList: [],
myEmployeeList: [], myEmployeeList: [],
isShowTrans: false, isShowTrans: false,
customStateList: [], customStateList: [],
stateId:0, stateId: 0,
stuData:{}, stuData: {},
} userInfo: {}
};
}, },
created() { created() {
this.getStuStageList() this.getStuStageList();
this.queryStuInfo() this.queryStuInfo();
this.userInfo = this.getLocalStorage();
}, },
mounted() { mounted() {
this.baseObj = this.saveObj; this.baseObj = this.saveObj;
this.getEmployeeList(); this.getEmployeeList();
}, },
methods: { methods: {
callUserHandler() {
tccc.callOut({
phoneNumber: this.baseObj.StuTel,
phoneDesc: this.baseObj.StuName
});
},
//判断是否显示转交 //判断是否显示转交
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;
} }
}, },
closeCutomer() { closeCutomer() {
this.$emit('close') this.$emit("close");
}, },
//刷新列表 //刷新列表
refreshStudentPage() { refreshStudentPage() {
this.$emit('success'); this.$emit("success");
}, },
//点击第二排 //点击第二排
getckedType(obj) { getckedType(obj) {
...@@ -213,7 +325,7 @@ ...@@ -213,7 +325,7 @@
}).then(res => { }).then(res => {
this.employeeList = res.Data; this.employeeList = res.Data;
this.myEmployeeList = res.Data; this.myEmployeeList = res.Data;
}) });
}, },
//筛选员工 //筛选员工
filterEmployee(val, update, abort) { filterEmployee(val, update, abort) {
...@@ -229,15 +341,15 @@ ...@@ -229,15 +341,15 @@
ForwardStudent(this.transMsg).then(res => { ForwardStudent(this.transMsg).then(res => {
if (res.Code == 1) { if (res.Code == 1) {
this.$q.notify({ this.$q.notify({
icon: 'iconfont icon-chenggong', icon: "iconfont icon-chenggong",
color: 'accent', color: "accent",
timeout: 2000, timeout: 2000,
message: '转交成功', message: "转交成功",
position: 'top' position: "top"
}) });
} }
this.isShowTrans = false; this.isShowTrans = false;
}) });
}, },
//保存成功后调用记录 //保存成功后调用记录
getrecord() { getrecord() {
...@@ -247,38 +359,37 @@ ...@@ -247,38 +359,37 @@
getStuStageList() { getStuStageList() {
queryStuStageList().then(res => { queryStuStageList().then(res => {
this.customStateList = res.Data; this.customStateList = res.Data;
}) });
}, },
queryStuInfo() { queryStuInfo() {
getStudentInfo({ getStudentInfo({
StuId: this.saveObj.StuId StuId: this.saveObj.StuId
}).then(res => { }).then(res => {
if (res.Code == 1) { if (res.Code == 1) {
this.stuData=res.Data this.stuData = res.Data;
this.stateId = res.Data.StuStage; this.stateId = res.Data.StuStage;
} }
}); });
},
},
} }
}
};
</script> </script>
<style> <style>
.custom_RModel { .custom_RModel {
width: 500px; width: 500px;
height: 100%; height: 100%;
} }
.customMain { .customMain {
width: 1000px !important; width: 1000px !important;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
height: 100 vh; height: 100 vh;
padding: 15px 17px 0 17px; padding: 15px 17px 0 17px;
background-color: #f4f4f6; background-color: #f4f4f6;
} }
.custom_Top { .custom_Top {
width: 100%; width: 100%;
padding: 22px; padding: 22px;
background: #fff; background: #fff;
...@@ -286,47 +397,47 @@ ...@@ -286,47 +397,47 @@
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
.custom_HLeft { .custom_HLeft {
display: flex; display: flex;
} }
.nameplate_avatar { .nameplate_avatar {
width: 60px; width: 60px;
height: 60px; height: 60px;
flex-shrink: 0; flex-shrink: 0;
margin-right: 14px; margin-right: 14px;
border-radius: 5px; border-radius: 5px;
overflow: hidden; overflow: hidden;
} }
.F_16 { .F_16 {
font-size: 16px; font-size: 16px;
} }
.Name_List { .Name_List {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: space-around; justify-content: space-around;
overflow: hidden; overflow: hidden;
} }
.wechat_Name { .wechat_Name {
color: #9999a8; color: #9999a8;
display: flex; display: flex;
font-size: 14px; font-size: 14px;
} }
.custom_Bottom { .custom_Bottom {
margin-top: 17px; margin-top: 17px;
flex: 1; flex: 1;
display: flex; display: flex;
margin-top: 17px; margin-top: 17px;
overflow: hidden; overflow: hidden;
} }
.detail-info { .detail-info {
flex-shrink: 0; flex-shrink: 0;
box-sizing: border-box; box-sizing: border-box;
display: flex; display: flex;
...@@ -338,13 +449,13 @@ ...@@ -338,13 +449,13 @@
background: #fff; background: #fff;
border-radius: 8px 8px 0 0; border-radius: 8px 8px 0 0;
overflow: auto; overflow: auto;
} }
.detail-info::-webkit-scrollbar { .detail-info::-webkit-scrollbar {
display: none; display: none;
} }
.detail-travel { .detail-travel {
width: 100%; width: 100%;
flex-grow: 1; flex-grow: 1;
display: flex; display: flex;
...@@ -353,30 +464,26 @@ ...@@ -353,30 +464,26 @@
background: #fff; background: #fff;
border-radius: 8px 8px 0 0; border-radius: 8px 8px 0 0;
overflow: hidden; overflow: hidden;
} }
.edit_bar {
.edit_bar {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
padding: 12px 22px; padding: 12px 22px;
} }
.edit_info_wrap { .edit_info_wrap {
padding: 0 22px 12px; padding: 0 22px 12px;
} }
.custom_Line { .custom_Line {
width: calc(100% - 44px); width: calc(100% - 44px);
margin: 16px 22px; margin: 16px 22px;
border-bottom: 1px solid #d7d7d7; border-bottom: 1px solid #d7d7d7;
} }
.custom_Edit { .custom_Edit {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
...@@ -387,66 +494,63 @@ ...@@ -387,66 +494,63 @@
border-radius: 4px; border-radius: 4px;
font-size: 12px; font-size: 12px;
cursor: pointer; cursor: pointer;
} }
.tripTypeContent { .tripTypeContent {
display: flex; display: flex;
overflow-x: auto; overflow-x: auto;
white-space: nowrap; white-space: nowrap;
} }
.StuCkedType { .StuCkedType {
color: #3470ff; color: #3470ff;
font-weight: 700; font-weight: 700;
} }
.tripTypeContent div { .tripTypeContent div {
margin-right: 20px; margin-right: 20px;
cursor: pointer; cursor: pointer;
} }
.q-timeline__title { .q-timeline__title {
margin-bottom: 5px; margin-bottom: 5px;
} }
.customUpdateTime { .customUpdateTime {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
font-size: 14px; font-size: 14px;
color: #9696a6; color: #9696a6;
} }
.q-timeline__subtitle { .q-timeline__subtitle {
opacity: 1; opacity: 1;
font-weight: normal; font-weight: normal;
} }
.follow_Component { .follow_Component {
padding: 0 22px; padding: 0 22px;
margin-top: 10px; margin-top: 10px;
width: 100%; width: 100%;
background-color: #f6f6f6; background-color: #f6f6f6;
border-radius: 5px; border-radius: 5px;
} }
.detail_first {
.detail_first {
margin: 0 22px; margin: 0 22px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
height: 100%; height: 100%;
} }
.detail_Main { .detail_Main {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
.student_Name { .student_Name {
width: 100%; width: 100%;
height: 100%; height: 100%;
background: #004d40; background: #004d40;
...@@ -454,96 +558,95 @@ ...@@ -454,96 +558,95 @@
text-align: center; text-align: center;
line-height: 60px; line-height: 60px;
font-size: 20px; font-size: 20px;
} }
.TimeLineDiv { .TimeLineDiv {
height: 620px; height: 620px;
flex: 1; flex: 1;
height: 100%; height: 100%;
padding-right: 20px; padding-right: 20px;
} }
.Time_TopList { .Time_TopList {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
} }
.visit_Cont { .visit_Cont {
font-size: 14px; font-size: 14px;
} }
.visit_delete { .visit_delete {
font-size: 14px; font-size: 14px;
cursor: pointer; cursor: pointer;
width: 30px; width: 30px;
} }
.operate_Content { .operate_Content {
overflow: auto; overflow: auto;
/* padding-right: 20px; */ /* padding-right: 20px; */
} }
.operate_Content::-webkit-scrollbar { .operate_Content::-webkit-scrollbar {
width: 6px; width: 6px;
height: 8px; height: 8px;
} }
.operate_Content::-webkit-scrollbar-thumb { .operate_Content::-webkit-scrollbar-thumb {
border-radius: 4px; border-radius: 4px;
-webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2);
background: #c9c9c9; background: #c9c9c9;
} }
.operate_Content::-webkit-scrollbar-thumb { .operate_Content::-webkit-scrollbar-thumb {
-webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2);
border-radius: 4px; border-radius: 4px;
background: #EDEDED; background: #ededed;
} }
.Log_Content { .Log_Content {
padding: 10px; padding: 10px;
border-radius: 5px; border-radius: 5px;
background-color: #f4f4f6; background-color: #f4f4f6;
color: #818194; color: #818194;
line-height: 2; line-height: 2;
margin-top: 10px; margin-top: 10px;
} }
.stu_ComFeed { .stu_ComFeed {
color: #3470ff; color: #3470ff;
cursor: pointer; cursor: pointer;
margin-left: 20px; margin-left: 20px;
} }
.StuCom_Remark { .StuCom_Remark {
display: flex; display: flex;
} }
.StuCom_Inner { .StuCom_Inner {
width: 100%; width: 100%;
} }
.StuCom_Left { .StuCom_Left {
flex-shrink: 0; flex-shrink: 0;
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 { .Stu_HtLeft {
width: 57px; width: 57px;
display: inline-block; display: inline-block;
text-align-last: justify; text-align-last: justify;
} }
.fullscreen { .fullscreen {
z-index: 3000; z-index: 3000;
} }
</style> </style>
...@@ -546,6 +546,9 @@ export default { ...@@ -546,6 +546,9 @@ export default {
border-radius: 50%; border-radius: 50%;
z-index: 2; z-index: 2;
} }
.MuiBadge-root {
display: none !important;
}
.wave_wrapper span.wave_scale { .wave_wrapper span.wave_scale {
animation: wave_scale 2s both infinite; animation: wave_scale 2s both infinite;
......
const tencentcloud = require("tencentcloud-sdk-nodejs-ccc");
const CccClient = tencentcloud.ccc.v20200210.Client;
const clientConfig = {
credential: {
secretId: "SecretId",
secretKey: "SecretKey"
},
region: "",
profile: {
httpProfile: {
endpoint: "ccc.tencentcloudapi.com"
}
}
};
const client = new CccClient(clientConfig);
const params = {
SdkAppId: 1400617921,
SeatUserId: "alex9012@vip.qq.com"
};
client.CreateSDKLoginToken(params).then(
data => {
console.log(data);
},
err => {
console.error("error", err);
}
);
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