Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
confucius
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
罗超
confucius
Commits
ed6c583e
Commit
ed6c583e
authored
Dec 31, 2021
by
罗超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增呼叫平台
parent
360f6033
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1406 additions
and
1077 deletions
+1406
-1077
student-left.vue
src/components/school/student/student-left.vue
+795
-602
studentRight-form.vue
src/components/school/student/studentRight-form.vue
+578
-475
MainLayout.vue
src/layouts/MainLayout.vue
+3
-0
tenccc.ts
src/utils/tenccc.ts
+30
-0
No files found.
src/components/school/student/student-left.vue
View file @
ed6c583e
<
style
>
.info_title
{
padding
:
0
22px
;
margin-bottom
:
20px
;
flex-shrink
:
0
;
font-size
:
16px
;
font-weight
:
700
;
font-family
:
Microsoft
YaHei
,
Avenir
,
Helvetica
,
Arial
,
sans-serif
!important
;
}
.info_title
{
padding
:
0
22px
;
margin-bottom
:
20px
;
flex-shrink
:
0
;
font-size
:
16px
;
font-weight
:
700
;
font-family
:
Microsoft
YaHei
,
Avenir
,
Helvetica
,
Arial
,
sans-serif
!important
;
}
.customer_info_component
{
width
:
100%
;
}
.customer_info_component
{
width
:
100%
;
}
.customer_info_Stage
{
width
:
100%
;
padding
:
0
7px
;
cursor
:
pointer
;
display
:
flex
;
align-items
:
center
;
width
:
100%
;
padding
:
12px
22px
;
justify-content
:
space-between
;
}
.customer_info_Stage
{
width
:
100%
;
padding
:
0
7px
;
cursor
:
pointer
;
display
:
flex
;
align-items
:
center
;
width
:
100%
;
padding
:
12px
22px
;
justify-content
:
space-between
;
}
.stage_label
{
color
:
#606266
;
flex-shrink
:
0
;
width
:
65px
;
text-align
:
right
;
}
.stage_label
{
color
:
#606266
;
flex-shrink
:
0
;
width
:
65px
;
text-align
:
right
;
}
.stage_value
{
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
.stage_value
{
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
.info_content
{
margin-bottom
:
30px
;
}
.info_content
{
margin-bottom
:
30px
;
}
.info_item
{
position
:
relative
;
display
:
flex
;
padding
:
12px
22px
;
align-items
:
center
;
}
.info_item
{
position
:
relative
;
display
:
flex
;
padding
:
12px
22px
;
align-items
:
center
;
}
.item_value
{
flex
:
1
;
font-size
:
14px
;
word-break
:
break-all
;
overflow
:
hidden
;
}
.item_value
{
flex
:
1
;
font-size
:
14px
;
word-break
:
break-all
;
overflow
:
hidden
;
}
.item_label
{
color
:
#606266
;
flex-shrink
:
0
;
width
:
120px
;
font-size
:
14px
;
}
.item_label
{
color
:
#606266
;
flex-shrink
:
0
;
width
:
120px
;
font-size
:
14px
;
}
.student_require
{
color
:
red
;
}
.stuHeadImg
{
width
:
80px
;
height
:
80px
;
position
:
relative
;
}
.student_require
{
color
:
red
;
}
.stuHeadImg
{
width
:
80px
;
height
:
80px
;
position
:
relative
;
}
</
style
>
<
template
>
<div>
...
...
@@ -80,10 +79,19 @@
<div
class=
"stage_label"
>
头像
</div>
<div
class=
"stage_value"
>
<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"
>
<img
:src=
"customObj.StuIcon"
v-if=
"customObj.StuIcon"
>
<img
v-else
src=
"../../../assets/images/administration/litheader.png"
alt=
""
/>
<img
:src=
"customObj.StuIcon"
v-if=
"customObj.StuIcon"
/>
<img
v-else
src=
"../../../assets/images/administration/litheader.png"
alt=
""
/>
</q-avatar>
</el-upload>
</div>
...
...
@@ -96,7 +104,14 @@
<span
class=
"student_require"
>
*
</span>
客户名称
</div>
<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>
</div>
</div>
...
...
@@ -107,31 +122,53 @@
客户电话
</div>
<div
class=
"stage_value"
>
<q-input
filled
v-model=
"customObj.StuTel"
style=
"width:185px;"
@
blur=
"CheckExistsStu(1)"
ref=
"StuTel"
:disable=
"noEdit"
dense
>
<q-input
filled
v-model=
"customObj.formatTel"
style=
"width:185px;"
@
blur=
"CheckExistsStu(1)"
ref=
"StuTel"
:disable=
"noEdit"
dense
>
</q-input>
</div>
</div>
</div>
<div
class=
"customer_info_component"
>
<div
class=
"customer_info_component"
v-if=
"BelongType != 3"
>
<div
class=
"customer_info_Stage"
>
<div
class=
"stage_label"
>
QQ
</div>
<div
class=
"stage_value"
>
<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>
<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
class=
"customer_info_component"
>
<div
class=
"customer_info_component"
v-if=
"BelongType != 3"
>
<div
class=
"customer_info_Stage"
>
<div
class=
"stage_label"
>
微信号
</div>
<div
class=
"stage_value"
>
<q-input
filled
v-model=
"customObj.WeChatNo"
@
blur=
"CheckExistsStu(3)"
style=
"width:185px;"
ref=
"WeChatNo"
:disable=
"noEdit"
dense
></q-input>
<q-input
filled
v-model=
"customObj.WeChatNo"
@
blur=
"CheckExistsStu(3)"
style=
"width:185px;"
ref=
"WeChatNo"
:disable=
"noEdit"
dense
></q-input>
</div>
</div>
</div>
...
...
@@ -141,57 +178,113 @@
<span
class=
"student_require"
>
*
</span>
客户状态
</div>
<div
class=
"stage_value"
>
<q-select
filled
v-model=
"customObj.StuStage"
dense
:options=
"customState"
option-label=
"Name"
:disable=
"noEdit"
style=
"width:185px;"
option-value=
"Id"
emit-value
map-options
label=
"客户状态"
/>
<q-select
filled
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>
<template
v-if=
"BelongType
!=
3"
>
<template
v-if=
"BelongType
!=
3"
>
<div
class=
"customer_info_component"
>
<div
class=
"customer_info_Stage"
>
<div
class=
"stage_label"
>
<span
class=
"student_require"
>
*
</span>
客户来源
</div>
<div
class=
"stage_value"
>
<q-select
filled
v-model=
"customObj.CreateType"
@
change=
"clearStuMsg()"
style=
"width:185px;"
:disable=
"(noEdit || isHaveOrder)"
@
input=
"resetStuSource()"
dense
:options=
"customFromList"
option-label=
"Name"
option-value=
"Id"
emit-value
map-options
label=
"客户来源"
/>
<q-select
filled
v-model=
"customObj.CreateType"
@
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
class=
"customer_info_component"
v-if=
"customObj.CreateType
==
3"
>
<div
class=
"customer_info_component"
v-if=
"customObj.CreateType
==
3"
>
<div
class=
"customer_info_Stage"
>
<div
class=
"stage_label"
>
<span
class=
"student_require"
>
*
</span>
介绍人
</div>
<div
class=
"stage_value"
>
<q-select
filled
v-model=
"customObj.StuSourceId"
style=
"width:185px;"
dense
@
filter=
"filterEmployee"
:disable=
"(noEdit || isHaveOrder)"
use-input
:options=
"myEmployeeList"
option-label=
"EmployeeName"
option-value=
"Id"
emit-value
map-options
/>
<q-select
filled
v-model=
"customObj.StuSourceId"
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
class=
"customer_info_component"
v-if=
"customObj.CreateType
==
4"
>
<div
class=
"customer_info_component"
v-if=
"customObj.CreateType
==
4"
>
<div
class=
"customer_info_Stage"
>
<div
class=
"stage_label"
>
<span
class=
"student_require"
>
*
</span>
转介人
</div>
<div
class=
"stage_value"
>
<q-select
filled
v-model=
"customObj.StuSourceId"
style=
"width:185px;"
use-input
@
filter=
"filterStudent"
:disable=
"(noEdit || isHaveOrder)"
dense
:options=
"MyTransListData"
option-label=
"StuName"
option-value=
"StuId"
emit-value
map-options
/>
<q-select
filled
v-model=
"customObj.StuSourceId"
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
class=
"customer_info_component"
v-if=
"customObj.CreateType
==
1"
>
<div
class=
"customer_info_component"
v-if=
"customObj.CreateType
==
1"
>
<div
class=
"customer_info_Stage"
>
<div
class=
"stage_label"
>
<span
class=
"student_require"
>
*
</span>
收客渠道
</div>
<div
class=
"stage_value"
>
<q-select
filled
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"
>
<q-select
filled
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
>
<q-item>
<q-item-section
class=
"text-grey"
>
...
...
@@ -203,15 +296,26 @@
</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=
"stage_label"
>
<span
class=
"student_require"
>
*
</span>
关联同行
</div>
<div
class=
"stage_value"
>
<q-select
filled
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
>
<q-select
filled
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
>
<q-item>
<q-item-section
class=
"text-grey"
>
...
...
@@ -223,17 +327,27 @@
</div>
</div>
</div>
<
template
v-if=
"customObj.CreateType
==
1"
>
<div
class=
"info_item"
v-if=
"customObj.StuChannel
==
6"
>
<
template
v-if=
"customObj.CreateType
==
1"
>
<div
class=
"info_item"
v-if=
"customObj.StuChannel
==
6"
>
<div
class=
"item_label"
>
第三方平台名称
</div>
<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
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_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>
</
template
>
...
...
@@ -244,8 +358,19 @@
<span
class=
"student_require"
>
*
</span>
客户类型
</div>
<div
class=
"stage_value"
>
<q-select
filled
v-model=
"customObj.StuType"
style=
"width:185px"
dense
:options=
"customTypeList"
:disable=
"noEdit"
option-label=
"Name"
option-value=
"Id"
emit-value
map-options
label=
"客户类型"
/>
<q-select
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>
...
...
@@ -255,8 +380,19 @@
客户需求
</div>
<div
class=
"stage_value"
>
<q-select
filled
v-model=
"customObj.StuNeeds"
style=
"width:185px"
dense
:options=
"NeedData"
:disable=
"noEdit"
option-label=
"Name"
option-value=
"Id"
emit-value
map-options
label=
"客户需求"
/>
<q-select
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>
...
...
@@ -266,17 +402,33 @@
<div
class=
"info_item"
>
<div
class=
"item_label"
>
性别
</div>
<div
class=
"item_value"
>
<q-radio
v-model=
"customObj.StuSex"
:val=
"0"
label=
"男"
:disable=
"noEdit"
/>
<q-radio
v-model=
"customObj.StuSex"
:val=
"1"
label=
"女"
:disable=
"noEdit"
/>
<q-radio
v-model=
"customObj.StuSex"
:val=
"0"
label=
"男"
:disable=
"noEdit"
/>
<q-radio
v-model=
"customObj.StuSex"
:val=
"1"
label=
"女"
:disable=
"noEdit"
/>
</div>
</div>
<div
class=
"info_item studentDate"
>
<div
class=
"item_label"
>
出生日期
</div>
<div
class=
"item_value"
>
<q-field
filled
dense
>
<
template
v-slot:control
>
<el-date-picker
v-model=
"customObj.StuBirth"
size=
"mini"
style=
"width:150px"
type=
"date"
:disabled=
"noEdit"
placeholder=
"选择日期"
>
<
template
v-slot:control
>
<el-date-picker
v-model=
"customObj.StuBirth"
size=
"mini"
style=
"width:150px"
type=
"date"
:disabled=
"noEdit"
placeholder=
"选择日期"
>
</el-date-picker>
</
template
>
</q-field>
...
...
@@ -286,28 +438,60 @@
<div
class=
"info_item"
>
<div
class=
"item_label"
>
日语基础
</div>
<div
class=
"item_value"
>
<q-select
filled
v-model=
"customObj.JapanBaseInfo"
dense
:options=
"basicList"
option-label=
"Name"
:disable=
"noEdit"
option-value=
"Id"
emit-value
map-options
/>
<q-select
filled
v-model=
"customObj.JapanBaseInfo"
dense
:options=
"basicList"
option-label=
"Name"
:disable=
"noEdit"
option-value=
"Id"
emit-value
map-options
/>
</div>
</div>
<div
class=
"info_item"
>
<div
class=
"item_label"
>
职业
</div>
<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
class=
"info_item"
>
<div
class=
"item_label"
>
学历
</div>
<div
class=
"item_value"
>
<q-select
filled
v-model=
"customObj.StuEducation"
dense
:options=
"educationList"
option-label=
"Name"
:disable=
"noEdit"
option-value=
"Id"
emit-value
map-options
/>
<q-select
filled
v-model=
"customObj.StuEducation"
dense
:options=
"educationList"
option-label=
"Name"
:disable=
"noEdit"
option-value=
"Id"
emit-value
map-options
/>
</div>
</div>
<div
class=
"info_item"
>
<div
class=
"item_label"
>
学习目的
</div>
<div
class=
"item_value"
>
<q-select
filled
v-model=
"customObj.StuPurpose"
dense
:options=
"goalsList"
option-label=
"Name"
:disable=
"noEdit"
option-value=
"Id"
emit-value
map-options
/>
<q-select
filled
v-model=
"customObj.StuPurpose"
dense
:options=
"goalsList"
option-label=
"Name"
:disable=
"noEdit"
option-value=
"Id"
emit-value
map-options
/>
</div>
</div>
<!-- <div class="info_item">
...
...
@@ -318,531 +502,540 @@
</div>
</div> -->
<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>
</template>
<
script
>
import
{
getStudentInfo
,
//获取学员客户信息
queryStuStageList
,
//获取客户阶段列表
saveStudent
,
//保存学员信息
GetStudentTypeList
,
getStudentDorpDownList
,
GetNeedsList
}
from
'../../../api/school/index'
;
import
{
getGuestBasicsEnumList
,
getGuestEducationEnumList
,
getGuestLearningGoalsEnumList
,
GetStuChannelList
,
CreateTypeList
,
CheckExistsStu
,
GetCustomerList
}
from
'../../../api/sale/sale'
import
{
queryEmployee
}
from
'../../../api/users/user'
import
{
queryStuOrderPage
,
//学员订单分页列表
}
from
'../../../api/customerstudent/customerstudent'
;
import
{
UploadSelfFile
}
from
'../../../api/common/common'
import
{
getStudentInfo
,
//获取学员客户信息
queryStuStageList
,
//获取客户阶段列表
saveStudent
,
//保存学员信息
GetStudentTypeList
,
getStudentDorpDownList
,
GetNeedsList
}
from
"../../../api/school/index"
;
import
{
getGuestBasicsEnumList
,
getGuestEducationEnumList
,
getGuestLearningGoalsEnumList
,
GetStuChannelList
,
CreateTypeList
,
CheckExistsStu
,
GetCustomerList
}
from
"../../../api/sale/sale"
;
import
{
queryEmployee
}
from
"../../../api/users/user"
;
import
{
queryStuOrderPage
//学员订单分页列表
}
from
"../../../api/customerstudent/customerstudent"
;
import
{
UploadSelfFile
}
from
"../../../api/common/common"
;
export
default
{
meta
:
{
title
:
"学员管理"
export
default
{
meta
:
{
title
:
"学员管理"
},
components
:
{},
props
:
{
stuData
:
{
type
:
Object
,
default
:
null
},
components
:
{
saveObj
:
{
type
:
Object
,
default
:
null
},
AddType
:
{
type
:
Number
,
default
:
null
},
props
:
{
stuData
:
{
type
:
Object
,
default
:
null
BelongType
:
{
type
:
Number
,
default
:
null
}
},
data
()
{
return
{
//客户阶段状态列表
customState
:
[],
customMsg
:
{
StuId
:
0
},
saveObj
:
{
type
:
Object
,
default
:
null
//客户对象
customObj
:
{
StuId
:
0
,
StuIcon
:
""
,
//学院头像
StuName
:
""
,
//客户名称
StuTel
:
""
,
//客户电话
CreateType
:
""
,
//客户来源
StuSourceId
:
""
,
//介绍人
StuChannel
:
""
,
//收客渠道
PlatformName
:
""
,
//平台名称
StuSex
:
0
,
//性别
StuBirth
:
""
,
//出生日期
StuStage
:
""
,
//客户阶段状态
JapanBaseInfo
:
""
,
//日语基础
StuProfession
:
""
,
//职业
StuEducation
:
""
,
//学历
StuPurpose
:
""
,
//学习目的
CreateBy
:
""
,
//创建人
CustomerId
:
0
,
//关联同行
QQ
:
""
,
//qq
WeChatNo
:
""
,
//微信号
StuType
:
""
,
//客户类型
StuNeeds
:
0
//客户需求
},
AddType
:
{
type
:
Number
,
default
:
null
//日语基础列表
basicList
:
[],
//学历列表
educationList
:
[],
//学习目的列表
goalsList
:
[],
//员工列表
employeeList
:
[],
myEmployeeList
:
[],
StuChannelList
:
[],
//收客渠道
allStuChannelList
:
[],
//所有收客渠道
AssistDropList
:
[],
//协助人员
customFromList
:
[],
//客户来源
customTypeList
:
[],
//客户类型
customList
:
[],
//同行列表
allCustomList
:
[],
//所有同行列表
TransListData
:
[],
//转介人数据
MyTransListData
:
[],
checkMsg
:
{
StuId
:
0
,
StuTel
:
""
,
QQ
:
""
,
WeChatNo
:
""
},
BelongType
:
{
type
:
Number
,
default
:
null
}
},
data
()
{
return
{
//客户阶段状态列表
customState
:
[],
customMsg
:
{
StuId
:
0
,
},
//客户对象
customObj
:
{
StuId
:
0
,
StuIcon
:
''
,
//学院头像
StuName
:
''
,
//客户名称
StuTel
:
''
,
//客户电话
CreateType
:
''
,
//客户来源
StuSourceId
:
''
,
//介绍人
StuChannel
:
''
,
//收客渠道
PlatformName
:
''
,
//平台名称
StuSex
:
0
,
//性别
StuBirth
:
''
,
//出生日期
StuStage
:
''
,
//客户阶段状态
JapanBaseInfo
:
''
,
//日语基础
StuProfession
:
''
,
//职业
StuEducation
:
''
,
//学历
StuPurpose
:
''
,
//学习目的
CreateBy
:
''
,
//创建人
CustomerId
:
0
,
//关联同行
QQ
:
''
,
//qq
WeChatNo
:
''
,
//微信号
StuType
:
''
,
//客户类型
StuNeeds
:
0
//客户需求
},
//日语基础列表
basicList
:
[],
//学历列表
educationList
:
[],
//学习目的列表
goalsList
:
[],
//员工列表
employeeList
:
[],
myEmployeeList
:
[],
StuChannelList
:
[],
//收客渠道
allStuChannelList
:
[],
//所有收客渠道
AssistDropList
:
[],
//协助人员
customFromList
:
[],
//客户来源
customTypeList
:
[],
//客户类型
customList
:
[],
//同行列表
allCustomList
:
[],
//所有同行列表
TransListData
:
[],
//转介人数据
MyTransListData
:
[],
checkMsg
:
{
StuId
:
0
,
StuTel
:
''
,
QQ
:
''
,
WeChatNo
:
''
},
NeedData
:
[],
noEdit
:
false
,
isHaveOrder
:
false
NeedData
:
[],
noEdit
:
false
,
isHaveOrder
:
false
};
},
created
()
{
this
.
getStuStageList
();
this
.
getBasicList
();
this
.
queryGuestEducationEnumList
();
this
.
queryGoalsList
();
this
.
getEmployeeList
();
this
.
GetStuChannelList
();
this
.
getCustomFrom
();
this
.
GetCustomerList
();
this
.
getCustomTypeList
();
this
.
getStudentDorpDown
();
this
.
getGetNeedsList
();
this
.
getStuOrderPage
();
if
(
this
.
saveObj
&&
this
.
saveObj
.
StuId
>
0
)
{
this
.
customMsg
.
StuId
=
this
.
saveObj
.
StuId
;
this
.
checkMsg
.
StuId
=
this
.
saveObj
.
StuId
;
if
(
this
.
saveObj
.
noEdit
&&
this
.
saveObj
.
noEdit
==
true
)
{
this
.
noEdit
=
true
;
}
}
if
(
this
.
BelongType
==
3
)
{
this
.
noEdit
=
true
;
}
},
watch
:
{
stuData
()
{
this
.
init
();
}
},
methods
:
{
uploadFile
(
files
)
{
UploadSelfFile
(
"studentIcon"
,
files
,
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
customObj
.
StuIcon
=
res
.
FileUrl
;
}
});
},
created
()
{
this
.
getStuStageList
();
this
.
getBasicList
();
this
.
queryGuestEducationEnumList
();
this
.
queryGoalsList
();
this
.
getEmployeeList
();
this
.
GetStuChannelList
();
this
.
getCustomFrom
();
this
.
GetCustomerList
();
this
.
getCustomTypeList
();
this
.
getStudentDorpDown
();
this
.
getGetNeedsList
();
this
.
getStuOrderPage
();
if
(
this
.
saveObj
&&
this
.
saveObj
.
StuId
>
0
)
{
this
.
customMsg
.
StuId
=
this
.
saveObj
.
StuId
;
this
.
checkMsg
.
StuId
=
this
.
saveObj
.
StuId
;
if
(
this
.
saveObj
.
noEdit
&&
this
.
saveObj
.
noEdit
==
true
)
{
this
.
noEdit
=
true
//获取客户需求
getGetNeedsList
()
{
GetNeedsList
().
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
NeedData
=
res
.
Data
;
}
});
},
//保存学员信息
saveStu
()
{
if
(
this
.
customObj
.
StuName
==
""
)
{
this
.
$q
.
notify
({
type
:
"negative"
,
position
:
"top"
,
message
:
`请输入客户名称`
});
return
;
}
if
(
this
.
BelongType
==
3
)
{
this
.
noEdit
=
true
if
(
this
.
customObj
.
StuTel
==
""
&&
this
.
customObj
.
QQ
==
""
&&
this
.
customObj
.
WeChatNo
==
""
)
{
this
.
$q
.
notify
({
type
:
"negative"
,
position
:
"top"
,
message
:
`请输入电话QQ微信至少一个`
});
return
;
}
},
watch
:
{
stuData
()
{
this
.
init
();
if
(
this
.
customObj
.
CreateType
==
""
)
{
this
.
$q
.
notify
({
type
:
"negative"
,
position
:
"top"
,
message
:
`请选择客户来源`
});
return
;
}
},
methods
:
{
uploadFile
(
files
)
{
UploadSelfFile
(
"studentIcon"
,
files
,
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
customObj
.
StuIcon
=
res
.
FileUrl
;
}
if
(
this
.
customObj
.
CreateType
==
1
&&
!
this
.
customObj
.
StuChannel
)
{
this
.
$q
.
notify
({
type
:
"negative"
,
position
:
"top"
,
message
:
`请选择收客渠道`
});
},
//获取客户需求
getGetNeedsList
()
{
GetNeedsList
().
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
NeedData
=
res
.
Data
;
}
})
},
//保存学员信息
saveStu
()
{
if
(
this
.
customObj
.
StuName
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`请输入客户名称`
})
return
}
if
(
this
.
customObj
.
StuTel
==
''
&&
this
.
customObj
.
QQ
==
''
&&
this
.
customObj
.
WeChatNo
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`请输入电话QQ微信至少一个`
})
return
}
if
(
this
.
customObj
.
CreateType
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`请选择客户来源`
})
return
}
if
(
this
.
customObj
.
CreateType
==
1
&&
!
this
.
customObj
.
StuChannel
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`请选择收客渠道`
})
return
}
if
(
this
.
customObj
.
CreateType
==
2
&&
!
this
.
customObj
.
CustomerId
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`请选择关联同行`
})
return
}
if
(
this
.
customObj
.
CreateType
==
3
&&
!
this
.
customObj
.
StuSourceId
)
{
return
;
}
if
(
this
.
customObj
.
CreateType
==
2
&&
!
this
.
customObj
.
CustomerId
)
{
this
.
$q
.
notify
({
type
:
"negative"
,
position
:
"top"
,
message
:
`请选择关联同行`
});
return
;
}
if
(
this
.
customObj
.
CreateType
==
3
&&
!
this
.
customObj
.
StuSourceId
)
{
this
.
$q
.
notify
({
type
:
"negative"
,
position
:
"top"
,
message
:
`请选择介绍人`
});
return
;
}
if
(
this
.
customObj
.
CreateType
==
4
&&
!
this
.
customObj
.
StuSourceId
)
{
this
.
$q
.
notify
({
type
:
"negative"
,
position
:
"top"
,
message
:
`请选择转介人`
});
return
;
}
if
(
this
.
customObj
.
StuStage
==
""
)
{
this
.
$q
.
notify
({
type
:
"negative"
,
position
:
"top"
,
message
:
`请选择客户状态`
});
return
;
}
if
(
this
.
customObj
.
StuType
==
""
)
{
this
.
$q
.
notify
({
type
:
"negative"
,
position
:
"top"
,
message
:
`请选择客户类型`
});
return
;
}
if
(
this
.
customObj
.
StuTel
!=
""
)
{
var
myreg
=
/^
[
1
][
3-9
][\d]{9}
/
;
if
(
!
myreg
.
test
(
this
.
customObj
.
StuTel
))
{
this
.
$q
.
notify
({
type
:
'negative'
,
type
:
"negative"
,
position
:
"top"
,
message
:
`请
选择介绍人
`
})
return
message
:
`请
输入正确的电话号码
`
})
;
return
;
}
if
(
this
.
customObj
.
CreateType
==
4
&&
!
this
.
customObj
.
StuSourceId
)
{
}
saveStudent
(
this
.
customObj
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`请选择转介人`
})
return
icon
:
"iconfont icon-chenggong"
,
color
:
"accent"
,
timeout
:
2000
,
message
:
"数据保存成功!"
,
position
:
"top"
});
this
.
$emit
(
"update"
);
this
.
$emit
(
"success"
);
this
.
$emit
(
"getrecord"
);
if
(
this
.
AddType
==
1
)
{
this
.
$emit
(
"close"
);
}
}
if
(
this
.
customObj
.
StuStage
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`请选择客户状态`
})
return
});
},
//获取员工列表
getEmployeeList
()
{
queryEmployee
({
IsLeave
:
1
}).
then
(
res
=>
{
this
.
employeeList
=
res
.
Data
;
this
.
myEmployeeList
=
res
.
Data
;
});
},
//获取收客渠道
GetStuChannelList
()
{
GetStuChannelList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
StuChannelList
=
res
.
Data
;
this
.
allStuChannelList
=
res
.
Data
;
}
if
(
this
.
customObj
.
StuType
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`请选择客户类型`
})
return
});
},
//筛选渠道
filterStuChannel
(
val
,
update
)
{
update
(()
=>
{
if
(
val
===
""
)
{
this
.
StuChannelList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
allStuChannelList
)
);
}
else
{
const
needle
=
val
.
toLowerCase
();
this
.
StuChannelList
=
this
.
allStuChannelList
.
filter
(
v
=>
v
.
Name
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
);
}
if
(
this
.
customObj
.
StuTel
!=
''
)
{
var
myreg
=
/^
[
1
][
3-9
][\d]{9}
/
;
if
(
!
myreg
.
test
(
this
.
customObj
.
StuTel
))
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`请输入正确的电话号码`
})
return
}
});
},
//筛选员工
filterEmployee
(
val
,
update
,
abort
)
{
update
(()
=>
{
this
.
myEmployeeList
=
this
.
employeeList
.
filter
(
v
=>
v
.
EmployeeName
.
indexOf
(
val
)
>
-
1
);
});
},
//获取日语基础列表
getBasicList
()
{
getGuestBasicsEnumList
({}).
then
(
res
=>
{
this
.
basicList
=
res
.
Data
;
});
},
//获取客户来源
getCustomFrom
()
{
CreateTypeList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
customFromList
=
res
.
Data
;
}
saveStudent
(
this
.
customObj
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'数据保存成功!'
,
position
:
'top'
})
this
.
$emit
(
'update'
);
this
.
$emit
(
'success'
);
this
.
$emit
(
'getrecord'
);
if
(
this
.
AddType
==
1
)
{
this
.
$emit
(
'close'
);
}
}
})
},
//获取员工列表
getEmployeeList
()
{
queryEmployee
({
IsLeave
:
1
}).
then
(
res
=>
{
this
.
employeeList
=
res
.
Data
;
this
.
myEmployeeList
=
res
.
Data
;
})
},
//获取收客渠道
GetStuChannelList
()
{
GetStuChannelList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
StuChannelList
=
res
.
Data
;
this
.
allStuChannelList
=
res
.
Data
;
}
})
},
//筛选渠道
filterStuChannel
(
val
,
update
,
)
{
update
(()
=>
{
if
(
val
===
""
)
{
this
.
StuChannelList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
allStuChannelList
));
}
else
{
const
needle
=
val
.
toLowerCase
();
this
.
StuChannelList
=
this
.
allStuChannelList
.
filter
(
(
v
)
=>
v
.
Name
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
);
}
});
},
//筛选员工
filterEmployee
(
val
,
update
,
abort
)
{
update
(()
=>
{
this
.
myEmployeeList
=
this
.
employeeList
.
filter
(
v
=>
v
.
EmployeeName
.
indexOf
(
val
)
>
-
1
);
});
},
//获取日语基础列表
getBasicList
()
{
getGuestBasicsEnumList
({}).
then
(
res
=>
{
this
.
basicList
=
res
.
Data
;
})
},
//获取客户来源
getCustomFrom
()
{
CreateTypeList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
customFromList
=
res
.
Data
;
}
})
},
//获取学历列表
queryGuestEducationEnumList
()
{
getGuestEducationEnumList
({}).
then
(
res
=>
{
this
.
educationList
=
res
.
Data
;
})
},
//获取学习目的列表
queryGoalsList
()
{
getGuestLearningGoalsEnumList
({}).
then
(
res
=>
{
this
.
goalsList
=
res
.
Data
;
})
},
//获取客户阶段列表
getStuStageList
()
{
queryStuStageList
().
then
(
res
=>
{
this
.
customState
=
res
.
Data
;
})
},
//获取客户下拉数据
GetCustomerList
()
{
let
msg
=
{
QCreateBy
:
0
});
},
//获取学历列表
queryGuestEducationEnumList
()
{
getGuestEducationEnumList
({}).
then
(
res
=>
{
this
.
educationList
=
res
.
Data
;
});
},
//获取学习目的列表
queryGoalsList
()
{
getGuestLearningGoalsEnumList
({}).
then
(
res
=>
{
this
.
goalsList
=
res
.
Data
;
});
},
//获取客户阶段列表
getStuStageList
()
{
queryStuStageList
().
then
(
res
=>
{
this
.
customState
=
res
.
Data
;
});
},
//获取客户下拉数据
GetCustomerList
()
{
let
msg
=
{
QCreateBy
:
0
};
GetCustomerList
(
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
customList
=
res
.
Data
;
this
.
allCustomList
=
res
.
Data
;
}
GetCustomerList
(
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
customList
=
res
.
Data
;
this
.
allCustomList
=
res
.
Data
;
}
})
},
//筛选客户
filterFn
(
val
,
update
)
{
update
(()
=>
{
if
(
val
===
""
)
{
this
.
customList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
allCustomList
));
}
else
{
const
needle
=
val
.
toLowerCase
();
this
.
customList
=
this
.
allCustomList
.
filter
(
(
v
)
=>
v
.
CustomerName
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
);
}
});
},
//获取客户类型
getCustomTypeList
()
{
GetStudentTypeList
().
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
customTypeList
=
res
.
Data
;
}
})
},
//获取转介人下拉
getStudentDorpDown
()
{
getStudentDorpDownList
().
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
TransListData
=
res
.
Data
;
this
.
MyTransListData
=
res
.
Data
;
}
})
},
//筛选转介人
filterStudent
(
val
,
update
,
abort
)
{
update
(()
=>
{
this
.
MyTransListData
=
this
.
TransListData
.
filter
(
v
=>
v
.
StuName
.
indexOf
(
val
)
>
-
1
});
},
//筛选客户
filterFn
(
val
,
update
)
{
update
(()
=>
{
if
(
val
===
""
)
{
this
.
customList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
allCustomList
));
}
else
{
const
needle
=
val
.
toLowerCase
();
this
.
customList
=
this
.
allCustomList
.
filter
(
v
=>
v
.
CustomerName
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
);
});
},
// queryStuInfo() {
// getStudentInfo({
// StuId: this.customMsg.StuId
// }).then(res => {
// if (res.Code == 1) {
// var tempDate = res.Data;
// this.customObj.StuId = tempDate.StuId;
// this.customObj.StuName = tempDate.StuName;
// this.customObj.StuTel = tempDate.StuTel;
// this.customObj.CreateType = tempDate.CreateType;
// this.customObj.StuSourceId = tempDate.StuSourceId;
// this.customObj.StuChannel = tempDate.StuChannel;
// this.customObj.PlatformName = tempDate.PlatformName;
// this.customObj.StuSex = tempDate.StuSex;
// this.customObj.StuBirth = tempDate.StuBirth;
// this.customObj.StuStage = tempDate.StuStage;
// this.customObj.JapanBaseInfo = tempDate.JapanBaseInfo;
// this.customObj.StuProfession = tempDate.StuProfession;
// this.customObj.StuEducation = tempDate.StuEducation;
// this.customObj.StuPurpose = tempDate.StuPurpose;
// this.customObj.CreateBy = tempDate.CreateBy;
// this.customObj.CustomerId = tempDate.CustomerId;
// this.customObj.StuType = tempDate.StuType;
// this.customObj.QQ = tempDate.QQ;
// this.customObj.WeChatNo = tempDate.WeChatNo;
// this.customObj.StuNeeds = tempDate.StuNeeds;
// }
// });
// },
init
()
{
const
tempDate
=
this
.
stuData
;
this
.
customObj
.
StuId
=
tempDate
.
StuId
;
this
.
customObj
.
StuName
=
tempDate
.
StuName
;
this
.
customObj
.
StuIcon
=
tempDate
.
StuIcon
;
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
;
if
(
this
.
customObj
.
StuId
>
0
)
{
this
.
isHaveOrder
=
true
}
},
//新增协助人员
addAssist
()
{
let
obj
=
{
Id
:
0
,
//编号
AssistId
:
1
,
//员工编号
AssistType
:
1
,
//类型
StuId
:
1
,
//学员编号
}
this
.
customObj
.
AssistList
.
push
(
obj
);
},
//删除协助人员
delAssist
(
index
)
{
this
.
customObj
.
AssistList
.
splice
(
index
,
1
);
},
//验证手机号
CheckExistsStu
(
type
)
{
if
(
type
==
1
)
{
if
(
this
.
customObj
.
StuTel
&&
this
.
customObj
.
StuTel
.
length
==
11
)
{
this
.
checkMsg
.
StuTel
=
this
.
customObj
.
StuTel
this
.
checkMsg
.
QQ
=
''
;
this
.
checkMsg
.
WeChatNo
=
''
;
CheckExistsStu
(
this
.
checkMsg
).
then
(
r
=>
{});
}
});
},
//获取客户类型
getCustomTypeList
()
{
GetStudentTypeList
().
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
customTypeList
=
res
.
Data
;
}
if
(
type
==
2
)
{
if
(
this
.
customObj
.
QQ
)
{
this
.
checkMsg
.
StuTel
=
''
;
this
.
checkMsg
.
QQ
=
this
.
customObj
.
QQ
;
this
.
checkMsg
.
WeChatNo
=
''
;
CheckExistsStu
(
this
.
checkMsg
).
then
(
r
=>
{});
}
});
},
//获取转介人下拉
getStudentDorpDown
()
{
getStudentDorpDownList
().
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
TransListData
=
res
.
Data
;
this
.
MyTransListData
=
res
.
Data
;
}
if
(
type
==
3
)
{
if
(
this
.
customObj
.
WeChatNo
)
{
this
.
checkMsg
.
StuTel
=
''
this
.
checkMsg
.
QQ
=
''
;
this
.
checkMsg
.
WeChatNo
=
this
.
customObj
.
WeChatNo
;
CheckExistsStu
(
this
.
checkMsg
).
then
(
r
=>
{});
}
});
},
//筛选转介人
filterStudent
(
val
,
update
,
abort
)
{
update
(()
=>
{
this
.
MyTransListData
=
this
.
TransListData
.
filter
(
v
=>
v
.
StuName
.
indexOf
(
val
)
>
-
1
);
});
},
// queryStuInfo() {
// getStudentInfo({
// StuId: this.customMsg.StuId
// }).then(res => {
// if (res.Code == 1) {
// var tempDate = res.Data;
// this.customObj.StuId = tempDate.StuId;
// this.customObj.StuName = tempDate.StuName;
// this.customObj.StuTel = tempDate.StuTel;
// this.customObj.CreateType = tempDate.CreateType;
// this.customObj.StuSourceId = tempDate.StuSourceId;
// this.customObj.StuChannel = tempDate.StuChannel;
// this.customObj.PlatformName = tempDate.PlatformName;
// this.customObj.StuSex = tempDate.StuSex;
// this.customObj.StuBirth = tempDate.StuBirth;
// this.customObj.StuStage = tempDate.StuStage;
// this.customObj.JapanBaseInfo = tempDate.JapanBaseInfo;
// this.customObj.StuProfession = tempDate.StuProfession;
// this.customObj.StuEducation = tempDate.StuEducation;
// this.customObj.StuPurpose = tempDate.StuPurpose;
// this.customObj.CreateBy = tempDate.CreateBy;
// this.customObj.CustomerId = tempDate.CustomerId;
// this.customObj.StuType = tempDate.StuType;
// this.customObj.QQ = tempDate.QQ;
// this.customObj.WeChatNo = tempDate.WeChatNo;
// this.customObj.StuNeeds = tempDate.StuNeeds;
// }
// });
// },
init
()
{
const
tempDate
=
this
.
stuData
;
this
.
customObj
.
StuId
=
tempDate
.
StuId
;
this
.
customObj
.
StuName
=
tempDate
.
StuName
;
this
.
customObj
.
StuIcon
=
tempDate
.
StuIcon
;
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
;
if
(
this
.
customObj
.
StuId
>
0
)
{
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
;
}
},
//新增协助人员
addAssist
()
{
let
obj
=
{
Id
:
0
,
//编号
AssistId
:
1
,
//员工编号
AssistType
:
1
,
//类型
StuId
:
1
//学员编号
};
this
.
customObj
.
AssistList
.
push
(
obj
);
},
//删除协助人员
delAssist
(
index
)
{
this
.
customObj
.
AssistList
.
splice
(
index
,
1
);
},
//验证手机号
CheckExistsStu
(
type
)
{
if
(
type
==
1
)
{
if
(
this
.
customObj
.
StuTel
&&
this
.
customObj
.
StuTel
.
length
==
11
)
{
this
.
checkMsg
.
StuTel
=
this
.
customObj
.
StuTel
;
this
.
checkMsg
.
QQ
=
""
;
this
.
checkMsg
.
WeChatNo
=
""
;
CheckExistsStu
(
this
.
checkMsg
).
then
(
r
=>
{});
}
},
//切换客户来源重置
resetStuSource
()
{
this
.
customObj
.
StuChannel
=
''
;
this
.
customObj
.
CustomerId
=
''
;
this
.
customObj
.
StuSourceId
=
''
;
this
.
customObj
.
PlatformName
=
''
;
},
getStuOrderPage
()
{
let
customMsg
=
{
pageIndex
:
1
,
pageSize
:
10
,
StuId
:
0
}
if
(
type
==
2
)
{
if
(
this
.
customObj
.
QQ
)
{
this
.
checkMsg
.
StuTel
=
""
;
this
.
checkMsg
.
QQ
=
this
.
customObj
.
QQ
;
this
.
checkMsg
.
WeChatNo
=
""
;
CheckExistsStu
(
this
.
checkMsg
).
then
(
r
=>
{});
}
if
(
this
.
saveObj
)
{
customMsg
.
StuId
=
this
.
saveObj
.
StuId
;
}
if
(
type
==
3
)
{
if
(
this
.
customObj
.
WeChatNo
)
{
this
.
checkMsg
.
StuTel
=
""
;
this
.
checkMsg
.
QQ
=
""
;
this
.
checkMsg
.
WeChatNo
=
this
.
customObj
.
WeChatNo
;
CheckExistsStu
(
this
.
checkMsg
).
then
(
r
=>
{});
}
queryStuOrderPage
(
customMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
if
(
this
.
customObj
.
StuId
>
0
)
{
if
(
res
.
Data
.
PageData
.
length
>
0
)
{
this
.
isHaveOrder
=
true
;
}
else
{
this
.
isHaveOrder
=
false
;
}
}
},
//切换客户来源重置
resetStuSource
()
{
this
.
customObj
.
StuChannel
=
""
;
this
.
customObj
.
CustomerId
=
""
;
this
.
customObj
.
StuSourceId
=
""
;
this
.
customObj
.
PlatformName
=
""
;
},
getStuOrderPage
()
{
let
customMsg
=
{
pageIndex
:
1
,
pageSize
:
10
,
StuId
:
0
};
if
(
this
.
saveObj
)
{
customMsg
.
StuId
=
this
.
saveObj
.
StuId
;
}
queryStuOrderPage
(
customMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
if
(
this
.
customObj
.
StuId
>
0
)
{
if
(
res
.
Data
.
PageData
.
length
>
0
)
{
this
.
isHaveOrder
=
true
;
}
else
{
this
.
isHaveOrder
=
false
;
}
}
});
},
}
});
}
}
};
</
script
>
<
style
scoped
>
::v-deep
.el-input__inner
{
background
:
transparent
;
border
:
none
;
}
::v-deep
.el-input__inner
{
background
:
transparent
;
border
:
none
;
}
</
style
>
src/components/school/student/studentRight-form.vue
View file @
ed6c583e
<
template
>
<q-dialog
v-model=
"persistent"
full-height
maximized
position=
"right"
persistent
@
hide=
"closeCutomer"
transition-show=
"slide-left"
>
<q-dialog
v-model=
"persistent"
full-height
maximized
position=
"right"
persistent
@
hide=
"closeCutomer"
transition-show=
"slide-left"
>
<div
class=
"customMain"
>
<div
class=
"custom_Top"
>
<div
class=
"custom_HLeft"
>
<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
>
<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
class=
"Name_List"
>
<div
class=
"F_16"
>
{{
baseObj
.
StuName
}}
</div>
<div
class=
"F_16"
>
{{
baseObj
.
StuName
}}
</div>
</div>
</div>
<div
class=
"custom_HRight"
v-if=
"getJudgeTrans()"
>
<q-btn
color=
"primary"
size=
"sm"
label=
"转交"
@
click=
"isShowTrans=true"
>
<div
class=
"custom_HRight"
>
<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-banner
v-if=
"isShowTrans"
>
<q-select
style=
"margin-top:20px;"
filled
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-select
style=
"margin-top:20px;"
filled
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-popup-proxy>
</q-btn>
...
...
@@ -29,11 +76,24 @@
</div>
<div
class=
"custom_Bottom"
>
<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
class=
"detail-travel"
>
<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=
"2"
label=
"操作"
/>
<q-tab
name=
"3"
label=
"订单"
/>
...
...
@@ -42,38 +102,84 @@
</q-tabs>
<div
class=
"operate_Content"
style=
"flex:1;"
>
<div
class=
"detail_Main"
>
<div
class=
"tripTypeContent"
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
class=
"tripTypeContent"
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>
<!-- 记录 -->
<template
v-if=
"ckedTab==1"
>
<student-record
:save-obj=
"baseObj"
@
success=
"refreshStudentPage"
ref=
"mychild"
></student-record>
<template
v-if=
"ckedTab == 1"
>
<student-record
:save-obj=
"baseObj"
@
success=
"refreshStudentPage"
ref=
"mychild"
></student-record>
</
template
>
<!-- 操作 -->
<
template
v-if=
"ckedTab
==
2"
>
<
template
v-if=
"ckedTab
==
2"
>
<div
class=
"operate_Content"
style=
"margin-top:20px;"
>
<student-visit
:stateId=
"stateId"
:stateList=
"customStateList"
@
update=
"queryStuInfo"
:save-obj=
"baseObj"
:StuId=
"baseObj.StuId"
v-if=
"secondType==1"
@
success=
"refreshStudentPage"
></student-visit>
<student-yuefang
:stateId=
"stateId"
:stateList=
"customStateList"
@
update=
"queryStuInfo"
:save-obj=
"baseObj"
v-if=
"secondType==2"
@
success=
"refreshStudentPage"
></student-yuefang>
<student-genjin
:stateId=
"stateId"
:stateList=
"customStateList"
@
update=
"queryStuInfo"
:save-obj=
"baseObj"
v-if=
"secondType==3"
@
success=
"refreshStudentPage"
></student-genjin>
<student-shiting
:save-obj=
"baseObj"
v-if=
"secondType==4"
@
success=
"refreshStudentPage"
>
<student-visit
:stateId=
"stateId"
:stateList=
"customStateList"
@
update=
"queryStuInfo"
:save-obj=
"baseObj"
:StuId=
"baseObj.StuId"
v-if=
"secondType == 1"
@
success=
"refreshStudentPage"
></student-visit>
<student-yuefang
:stateId=
"stateId"
:stateList=
"customStateList"
@
update=
"queryStuInfo"
:save-obj=
"baseObj"
v-if=
"secondType == 2"
@
success=
"refreshStudentPage"
></student-yuefang>
<student-genjin
:stateId=
"stateId"
:stateList=
"customStateList"
@
update=
"queryStuInfo"
:save-obj=
"baseObj"
v-if=
"secondType == 3"
@
success=
"refreshStudentPage"
></student-genjin>
<student-shiting
:save-obj=
"baseObj"
v-if=
"secondType == 4"
@
success=
"refreshStudentPage"
>
</student-shiting>
</div>
</
template
>
<!-- 订单 -->
<
template
v-if=
"ckedTab==3"
>
<student-order
:save-obj=
"baseObj"
@
success=
"refreshStudentPage"
></student-order>
<
template
v-if=
"ckedTab == 3"
>
<student-order
:save-obj=
"baseObj"
@
success=
"refreshStudentPage"
></student-order>
</
template
>
<!-- 合同 -->
<
template
v-if=
"ckedTab==4"
>
<student-hetong
:save-obj=
"baseObj"
@
success=
"refreshStudentPage"
></student-hetong>
<
template
v-if=
"ckedTab == 4"
>
<student-hetong
:save-obj=
"baseObj"
@
success=
"refreshStudentPage"
></student-hetong>
</
template
>
<
template
v-if=
"ckedTab==5"
>
<student-Assit
:save-obj=
"baseObj"
:BelongType=
"BelongType"
@
success=
"refreshStudentPage"
></student-Assit>
<
template
v-if=
"ckedTab == 5"
>
<student-Assit
:save-obj=
"baseObj"
:BelongType=
"BelongType"
@
success=
"refreshStudentPage"
></student-Assit>
</
template
>
</div>
</div>
...
...
@@ -85,465 +191,462 @@
</div>
</div>
</q-dialog>
</template>
<
script
>
import
{
queryEmployee
}
from
'../../../api/users/user'
import
{
ForwardStudent
}
from
'../../../api/customerstudent/customerstudent'
import
{
getStudentInfo
,
//获取学员客户信息
queryStuStageList
,
//获取客户阶段列表
}
from
'../../../api/school/index'
;
import
studentLeft
from
'../student/student-left'
;
import
studentRecord
from
'../student/student-record'
;
import
studentVisit
from
'../student/student-visit'
;
import
studentYuefang
from
'../student/student-yuefang'
;
import
studentGenjin
from
'../student/student-genjin'
;
import
studentShiting
from
'../student/student-shiting'
;
import
studentHetong
from
'../student/student-hetong'
;
import
studentOrder
from
'../student/student-order'
;
import
studentAssit
from
'../student/student-Assit'
;
export
default
{
meta
:
{
title
:
"学员管理"
},
components
:
{
studentLeft
,
studentRecord
,
studentVisit
,
studentYuefang
,
studentGenjin
,
studentShiting
,
studentHetong
,
studentOrder
,
studentAssit
import
{
queryEmployee
}
from
"../../../api/users/user"
;
import
{
ForwardStudent
}
from
"../../../api/customerstudent/customerstudent"
;
import
{
getStudentInfo
,
//获取学员客户信息
queryStuStageList
//获取客户阶段列表
}
from
"../../../api/school/index"
;
import
studentLeft
from
"../student/student-left"
;
import
studentRecord
from
"../student/student-record"
;
import
studentVisit
from
"../student/student-visit"
;
import
studentYuefang
from
"../student/student-yuefang"
;
import
studentGenjin
from
"../student/student-genjin"
;
import
studentShiting
from
"../student/student-shiting"
;
import
studentHetong
from
"../student/student-hetong"
;
import
studentOrder
from
"../student/student-order"
;
import
studentAssit
from
"../student/student-Assit"
;
export
default
{
meta
:
{
title
:
"学员管理"
},
components
:
{
studentLeft
,
studentRecord
,
studentVisit
,
studentYuefang
,
studentGenjin
,
studentShiting
,
studentHetong
,
studentOrder
,
studentAssit
},
props
:
{
saveObj
:
{
type
:
Object
,
default
:
null
},
props
:
{
saveObj
:
{
type
:
Object
,
default
:
null
},
isJudgeTrans
:
{
type
:
Number
,
default
:
null
},
BelongType
:
{
type
:
Number
,
default
:
null
}
isJudgeTrans
:
{
type
:
Number
,
default
:
null
},
data
()
{
return
{
persistent
:
true
,
ckedTab
:
'1'
,
secondType
:
1
,
visitList
:
[{
Name
:
'到访'
,
BelongType
:
{
type
:
Number
,
default
:
null
}
},
data
()
{
return
{
persistent
:
true
,
ckedTab
:
"1"
,
secondType
:
1
,
visitList
:
[
{
Name
:
"到访"
,
Id
:
1
},
{
Name
:
'约访'
,
},
{
Name
:
"约访"
,
Id
:
2
},
{
Name
:
'跟进'
,
},
{
Name
:
"跟进"
,
Id
:
3
},
{
Name
:
'试听'
,
},
{
Name
:
"试听"
,
Id
:
4
}],
msg
:
{
}
],
},
baseObj
:
{},
transMsg
:
{
StuId
:
1
,
CreateBy
:
''
},
//员工列表
employeeList
:
[],
myEmployeeList
:
[],
isShowTrans
:
false
,
customStateList
:
[],
stateId
:
0
,
stuData
:{},
msg
:
{},
baseObj
:
{},
transMsg
:
{
StuId
:
1
,
CreateBy
:
""
},
//员工列表
employeeList
:
[],
myEmployeeList
:
[],
isShowTrans
:
false
,
customStateList
:
[],
stateId
:
0
,
stuData
:
{},
userInfo
:
{}
};
},
created
()
{
this
.
getStuStageList
();
this
.
queryStuInfo
();
this
.
userInfo
=
this
.
getLocalStorage
();
},
mounted
()
{
this
.
baseObj
=
this
.
saveObj
;
this
.
getEmployeeList
();
},
methods
:
{
callUserHandler
()
{
tccc
.
callOut
({
phoneNumber
:
this
.
baseObj
.
StuTel
,
phoneDesc
:
this
.
baseObj
.
StuName
});
},
//判断是否显示转交
getJudgeTrans
()
{
let
userInfo
=
this
.
getLocalStorage
();
let
Id
=
userInfo
.
Id
;
if
(
this
.
isJudgeTrans
==
1
)
{
if
(
this
.
baseObj
.
CreateBy
==
Id
)
{
return
true
;
}
else
{
return
false
;
}
}
else
{
return
true
;
}
},
created
()
{
this
.
getStuStageList
()
this
.
queryStuInfo
()
closeCutomer
()
{
this
.
$emit
(
"close"
);
},
mounted
()
{
this
.
baseObj
=
this
.
saveObj
;
this
.
getEmployeeList
(
);
//刷新列表
refreshStudentPage
()
{
this
.
$emit
(
"success"
);
},
methods
:
{
//判断是否显示转交
getJudgeTrans
()
{
let
userInfo
=
this
.
getLocalStorage
();
let
Id
=
userInfo
.
Id
;
if
(
this
.
isJudgeTrans
==
1
)
{
if
(
this
.
baseObj
.
CreateBy
==
Id
)
{
return
true
}
else
{
return
false
}
}
else
{
return
true
//点击第二排
getckedType
(
obj
)
{
this
.
secondType
=
obj
.
Id
;
},
//获取员工列表
getEmployeeList
()
{
queryEmployee
({
IsLeave
:
1
}).
then
(
res
=>
{
this
.
employeeList
=
res
.
Data
;
this
.
myEmployeeList
=
res
.
Data
;
});
},
//筛选员工
filterEmployee
(
val
,
update
,
abort
)
{
update
(()
=>
{
this
.
myEmployeeList
=
this
.
employeeList
.
filter
(
v
=>
v
.
EmployeeName
.
indexOf
(
val
)
>
-
1
);
});
},
//保存转交
saveTransForm
()
{
this
.
transMsg
.
StuId
=
this
.
baseObj
.
StuId
;
ForwardStudent
(
this
.
transMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
"iconfont icon-chenggong"
,
color
:
"accent"
,
timeout
:
2000
,
message
:
"转交成功"
,
position
:
"top"
});
}
},
closeCutomer
()
{
this
.
$emit
(
'close'
)
},
//刷新列表
refreshStudentPage
()
{
this
.
$emit
(
'success'
);
},
//点击第二排
getckedType
(
obj
)
{
this
.
secondType
=
obj
.
Id
;
},
//获取员工列表
getEmployeeList
()
{
queryEmployee
({
IsLeave
:
1
}).
then
(
res
=>
{
this
.
employeeList
=
res
.
Data
;
this
.
myEmployeeList
=
res
.
Data
;
})
},
//筛选员工
filterEmployee
(
val
,
update
,
abort
)
{
update
(()
=>
{
this
.
myEmployeeList
=
this
.
employeeList
.
filter
(
v
=>
v
.
EmployeeName
.
indexOf
(
val
)
>
-
1
);
});
},
//保存转交
saveTransForm
()
{
this
.
transMsg
.
StuId
=
this
.
baseObj
.
StuId
;
ForwardStudent
(
this
.
transMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'转交成功'
,
position
:
'top'
})
}
this
.
isShowTrans
=
false
;
})
},
//保存成功后调用记录
getrecord
()
{
this
.
$refs
.
mychild
.
getStuLogPage
();
},
//获取客户阶段列表
getStuStageList
()
{
queryStuStageList
().
then
(
res
=>
{
this
.
customStateList
=
res
.
Data
;
})
},
queryStuInfo
()
{
getStudentInfo
({
StuId
:
this
.
saveObj
.
StuId
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
stuData
=
res
.
Data
this
.
stateId
=
res
.
Data
.
StuStage
;
}
});
},
this
.
isShowTrans
=
false
;
});
},
//保存成功后调用记录
getrecord
()
{
this
.
$refs
.
mychild
.
getStuLogPage
();
},
//获取客户阶段列表
getStuStageList
()
{
queryStuStageList
().
then
(
res
=>
{
this
.
customStateList
=
res
.
Data
;
});
},
queryStuInfo
()
{
getStudentInfo
({
StuId
:
this
.
saveObj
.
StuId
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
stuData
=
res
.
Data
;
this
.
stateId
=
res
.
Data
.
StuStage
;
}
});
}
}
};
</
script
>
<
style
>
.custom_RModel
{
width
:
500px
;
height
:
100%
;
}
.customMain
{
width
:
1000px
!important
;
display
:
flex
;
flex-direction
:
column
;
height
:
100
vh
;
padding
:
15px
17px
0
17px
;
background-color
:
#f4f4f6
;
}
.custom_Top
{
width
:
100%
;
padding
:
22px
;
background
:
#fff
;
border-radius
:
8px
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
}
.custom_HLeft
{
display
:
flex
;
}
.nameplate_avatar
{
width
:
60px
;
height
:
60px
;
flex-shrink
:
0
;
margin-right
:
14px
;
border-radius
:
5px
;
overflow
:
hidden
;
}
.F_16
{
font-size
:
16px
;
}
.Name_List
{
display
:
flex
;
flex-direction
:
column
;
justify-content
:
space-around
;
overflow
:
hidden
;
}
.wechat_Name
{
color
:
#9999a8
;
display
:
flex
;
font-size
:
14px
;
}
.custom_Bottom
{
margin-top
:
17px
;
flex
:
1
;
display
:
flex
;
margin-top
:
17px
;
overflow
:
hidden
;
}
.detail-info
{
flex-shrink
:
0
;
box-sizing
:
border-box
;
display
:
flex
;
flex-direction
:
column
;
width
:
350px
;
height
:
100%
;
padding
:
28px
0
;
margin-right
:
13px
;
background
:
#fff
;
border-radius
:
8px
8px
0
0
;
overflow
:
auto
;
}
.detail-info
::-webkit-scrollbar
{
display
:
none
;
}
.detail-travel
{
width
:
100%
;
flex-grow
:
1
;
display
:
flex
;
flex-direction
:
column
;
padding-top
:
28px
;
background
:
#fff
;
border-radius
:
8px
8px
0
0
;
overflow
:
hidden
;
}
.edit_bar
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
padding
:
12px
22px
;
}
.edit_info_wrap
{
padding
:
0
22px
12px
;
}
.custom_Line
{
width
:
calc
(
100%
-
44px
);
margin
:
16px
22px
;
border-bottom
:
1px
solid
#d7d7d7
;
}
.custom_Edit
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
width
:
78px
;
height
:
26px
;
margin-right
:
3px
;
border
:
1px
dashed
#858598
;
border-radius
:
4px
;
font-size
:
12px
;
cursor
:
pointer
;
}
.tripTypeContent
{
display
:
flex
;
overflow-x
:
auto
;
white-space
:
nowrap
;
}
.StuCkedType
{
color
:
#3470ff
;
font-weight
:
700
;
}
.tripTypeContent
div
{
margin-right
:
20px
;
cursor
:
pointer
;
}
.q-timeline__title
{
margin-bottom
:
5px
;
}
.customUpdateTime
{
display
:
flex
;
justify-content
:
space-between
;
font-size
:
14px
;
color
:
#9696a6
;
}
.q-timeline__subtitle
{
opacity
:
1
;
font-weight
:
normal
;
}
.follow_Component
{
padding
:
0
22px
;
margin-top
:
10px
;
width
:
100%
;
background-color
:
#f6f6f6
;
border-radius
:
5px
;
}
.detail_first
{
margin
:
0
22px
;
display
:
flex
;
flex-direction
:
column
;
height
:
100%
;
}
.detail_Main
{
display
:
flex
;
flex-direction
:
column
;
width
:
100%
;
height
:
100%
;
}
.student_Name
{
width
:
100%
;
height
:
100%
;
background
:
#004d40
;
color
:
#fff
;
text-align
:
center
;
line-height
:
60px
;
font-size
:
20px
;
}
.TimeLineDiv
{
height
:
620px
;
flex
:
1
;
height
:
100%
;
padding-right
:
20px
;
}
.Time_TopList
{
display
:
flex
;
justify-content
:
space-between
;
}
.visit_Cont
{
font-size
:
14px
;
}
.visit_delete
{
font-size
:
14px
;
cursor
:
pointer
;
width
:
30px
;
}
.operate_Content
{
overflow
:
auto
;
/* padding-right: 20px; */
}
.operate_Content
::-webkit-scrollbar
{
width
:
6px
;
height
:
8px
;
}
.operate_Content
::-webkit-scrollbar-thumb
{
border-radius
:
4px
;
-webkit-box-shadow
:
inset
0
0
2px
rgba
(
0
,
0
,
0
,
0.2
);
background
:
#c9c9c9
;
}
.operate_Content
::-webkit-scrollbar-thumb
{
-webkit-box-shadow
:
inset
0
0
2px
rgba
(
0
,
0
,
0
,
0.2
);
border-radius
:
4px
;
background
:
#EDEDED
;
}
.Log_Content
{
padding
:
10px
;
border-radius
:
5px
;
background-color
:
#f4f4f6
;
color
:
#818194
;
line-height
:
2
;
margin-top
:
10px
;
}
.stu_ComFeed
{
color
:
#3470ff
;
cursor
:
pointer
;
margin-left
:
20px
;
}
.StuCom_Remark
{
display
:
flex
;
}
.StuCom_Inner
{
width
:
100%
;
}
.StuCom_Left
{
flex-shrink
:
0
;
width
:
57px
;
text-align-last
:
justify
;
}
.Stu_OrderId
{
color
:
#2961FE
;
font-weight
:
bold
;
text-decoration
:
underline
;
cursor
:
pointer
;
}
.Stu_HtLeft
{
width
:
57px
;
display
:
inline-block
;
text-align-last
:
justify
;
}
.fullscreen
{
z-index
:
3000
;
}
.custom_RModel
{
width
:
500px
;
height
:
100%
;
}
.customMain
{
width
:
1000px
!important
;
display
:
flex
;
flex-direction
:
column
;
height
:
100
vh
;
padding
:
15px
17px
0
17px
;
background-color
:
#f4f4f6
;
}
.custom_Top
{
width
:
100%
;
padding
:
22px
;
background
:
#fff
;
border-radius
:
8px
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
}
.custom_HLeft
{
display
:
flex
;
}
.nameplate_avatar
{
width
:
60px
;
height
:
60px
;
flex-shrink
:
0
;
margin-right
:
14px
;
border-radius
:
5px
;
overflow
:
hidden
;
}
.F_16
{
font-size
:
16px
;
}
.Name_List
{
display
:
flex
;
flex-direction
:
column
;
justify-content
:
space-around
;
overflow
:
hidden
;
}
.wechat_Name
{
color
:
#9999a8
;
display
:
flex
;
font-size
:
14px
;
}
.custom_Bottom
{
margin-top
:
17px
;
flex
:
1
;
display
:
flex
;
margin-top
:
17px
;
overflow
:
hidden
;
}
.detail-info
{
flex-shrink
:
0
;
box-sizing
:
border-box
;
display
:
flex
;
flex-direction
:
column
;
width
:
350px
;
height
:
100%
;
padding
:
28px
0
;
margin-right
:
13px
;
background
:
#fff
;
border-radius
:
8px
8px
0
0
;
overflow
:
auto
;
}
.detail-info
::-webkit-scrollbar
{
display
:
none
;
}
.detail-travel
{
width
:
100%
;
flex-grow
:
1
;
display
:
flex
;
flex-direction
:
column
;
padding-top
:
28px
;
background
:
#fff
;
border-radius
:
8px
8px
0
0
;
overflow
:
hidden
;
}
.edit_bar
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
padding
:
12px
22px
;
}
.edit_info_wrap
{
padding
:
0
22px
12px
;
}
.custom_Line
{
width
:
calc
(
100%
-
44px
);
margin
:
16px
22px
;
border-bottom
:
1px
solid
#d7d7d7
;
}
.custom_Edit
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
width
:
78px
;
height
:
26px
;
margin-right
:
3px
;
border
:
1px
dashed
#858598
;
border-radius
:
4px
;
font-size
:
12px
;
cursor
:
pointer
;
}
.tripTypeContent
{
display
:
flex
;
overflow-x
:
auto
;
white-space
:
nowrap
;
}
.StuCkedType
{
color
:
#3470ff
;
font-weight
:
700
;
}
.tripTypeContent
div
{
margin-right
:
20px
;
cursor
:
pointer
;
}
.q-timeline__title
{
margin-bottom
:
5px
;
}
.customUpdateTime
{
display
:
flex
;
justify-content
:
space-between
;
font-size
:
14px
;
color
:
#9696a6
;
}
.q-timeline__subtitle
{
opacity
:
1
;
font-weight
:
normal
;
}
.follow_Component
{
padding
:
0
22px
;
margin-top
:
10px
;
width
:
100%
;
background-color
:
#f6f6f6
;
border-radius
:
5px
;
}
.detail_first
{
margin
:
0
22px
;
display
:
flex
;
flex-direction
:
column
;
height
:
100%
;
}
.detail_Main
{
display
:
flex
;
flex-direction
:
column
;
width
:
100%
;
height
:
100%
;
}
.student_Name
{
width
:
100%
;
height
:
100%
;
background
:
#004d40
;
color
:
#fff
;
text-align
:
center
;
line-height
:
60px
;
font-size
:
20px
;
}
.TimeLineDiv
{
height
:
620px
;
flex
:
1
;
height
:
100%
;
padding-right
:
20px
;
}
.Time_TopList
{
display
:
flex
;
justify-content
:
space-between
;
}
.visit_Cont
{
font-size
:
14px
;
}
.visit_delete
{
font-size
:
14px
;
cursor
:
pointer
;
width
:
30px
;
}
.operate_Content
{
overflow
:
auto
;
/* padding-right: 20px; */
}
.operate_Content
::-webkit-scrollbar
{
width
:
6px
;
height
:
8px
;
}
.operate_Content
::-webkit-scrollbar-thumb
{
border-radius
:
4px
;
-webkit-box-shadow
:
inset
0
0
2px
rgba
(
0
,
0
,
0
,
0.2
);
background
:
#c9c9c9
;
}
.operate_Content
::-webkit-scrollbar-thumb
{
-webkit-box-shadow
:
inset
0
0
2px
rgba
(
0
,
0
,
0
,
0.2
);
border-radius
:
4px
;
background
:
#ededed
;
}
.Log_Content
{
padding
:
10px
;
border-radius
:
5px
;
background-color
:
#f4f4f6
;
color
:
#818194
;
line-height
:
2
;
margin-top
:
10px
;
}
.stu_ComFeed
{
color
:
#3470ff
;
cursor
:
pointer
;
margin-left
:
20px
;
}
.StuCom_Remark
{
display
:
flex
;
}
.StuCom_Inner
{
width
:
100%
;
}
.StuCom_Left
{
flex-shrink
:
0
;
width
:
57px
;
text-align-last
:
justify
;
}
.Stu_OrderId
{
color
:
#2961fe
;
font-weight
:
bold
;
text-decoration
:
underline
;
cursor
:
pointer
;
}
.Stu_HtLeft
{
width
:
57px
;
display
:
inline-block
;
text-align-last
:
justify
;
}
.fullscreen
{
z-index
:
3000
;
}
</
style
>
src/layouts/MainLayout.vue
View file @
ed6c583e
...
...
@@ -546,6 +546,9 @@ export default {
border-radius
:
50%
;
z-index
:
2
;
}
.MuiBadge-root
{
display
:
none
!important
;
}
.wave_wrapper
span
.wave_scale
{
animation
:
wave_scale
2s
both
infinite
;
...
...
src/utils/tenccc.ts
View file @
ed6c583e
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
);
}
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment