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
c263d57a
Commit
c263d57a
authored
Dec 14, 2021
by
zhengke
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
fe8b3317
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
80 additions
and
62 deletions
+80
-62
sale.js
src/api/sale/sale.js
+18
-0
student-left.vue
src/components/school/student/student-left.vue
+28
-39
student-shiting.vue
src/components/school/student/student-shiting.vue
+13
-11
student-visit.vue
src/components/school/student/student-visit.vue
+5
-5
student-yuefang.vue
src/components/school/student/student-yuefang.vue
+3
-3
studentRight-form.vue
src/components/school/student/studentRight-form.vue
+8
-2
stulist.vue
src/components/school/student/stulist.vue
+1
-1
student.vue
src/pages/school/student.vue
+4
-1
No files found.
src/api/sale/sale.js
View file @
c263d57a
...
...
@@ -395,4 +395,22 @@ export function GetAssistTypeList(data) {
});
}
// 保存协助数据
export
function
SetStudentAssist
(
data
)
{
return
request
({
url
:
'/CustomerStudent/SetStudentAssist'
,
method
:
'post'
,
data
});
}
// 获取协助数据
export
function
GetStudentAssistList
(
data
)
{
return
request
({
url
:
'/CustomerStudent/GetStudentAssistList'
,
method
:
'post'
,
data
});
}
src/components/school/student/student-left.vue
View file @
c263d57a
...
...
@@ -68,7 +68,7 @@
<div
class=
"customer_info_Stage"
>
<div
class=
"stage_label"
>
客户名称
</div>
<div
class=
"stage_value"
>
<q-input
filled
v-model=
"customObj.StuName"
></q-input>
<q-input
filled
v-model=
"customObj.StuName"
dense
></q-input>
</div>
</div>
</div>
...
...
@@ -85,7 +85,7 @@
<div
class=
"customer_info_Stage"
>
<div
class=
"stage_label"
>
电话
</div>
<div
class=
"stage_value"
>
<q-input
filled
v-model=
"customObj.StuTel"
></q-input>
<q-input
filled
v-model=
"customObj.StuTel"
dense
></q-input>
</div>
</div>
</div>
...
...
@@ -93,7 +93,7 @@
<div
class=
"customer_info_Stage"
>
<div
class=
"stage_label"
>
出生日期
</div>
<div
class=
"stage_value"
>
<q-input
filled
v-model=
"customObj.StuBirth"
style=
"width:182px;"
mask=
"date"
label=
"出生日期"
>
<q-input
filled
v-model=
"customObj.StuBirth"
dense
style=
"width:182px;"
mask=
"date"
label=
"出生日期"
>
<template
v-slot:append
>
<q-icon
name=
"event"
class=
"cursor-pointer"
>
<q-popup-proxy
ref=
"qDateProxy1"
transition-show=
"scale"
transition-hide=
"scale"
>
...
...
@@ -112,69 +112,62 @@
<div
class=
"info_item"
>
<div
class=
"item_label"
>
客户来源
</div>
<div
class=
"item_value"
>
<q-select
filled
v-model=
"customObj.cusfrom"
:options=
"customFrom"
option-label=
"Name"
option-value=
"Id"
<q-select
filled
v-model=
"customObj.cusfrom"
dense
:options=
"customFrom"
option-label=
"Name"
option-value=
"Id"
emit-value
map-options
label=
"客户来源"
/>
</div>
</div>
<div
class=
"info_item"
>
<div
class=
"item_label"
>
创建人
</div>
<div
class=
"item_value"
>
<q-select
filled
v-model=
"customObj.CreateBy"
disable
@
filter=
"filterEmployee"
use-input
<q-select
filled
v-model=
"customObj.CreateBy"
d
ense
d
isable
@
filter=
"filterEmployee"
use-input
:options=
"myEmployeeList"
option-label=
"EmployeeName"
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.StuStage"
:options=
"customState"
option-label=
"Name"
option-value=
"Id"
<q-select
filled
v-model=
"customObj.StuStage"
dense
:options=
"customState"
option-label=
"Name"
option-value=
"Id"
emit-value
map-options
label=
"客户状态"
/>
</div>
</div>
<div
class=
"info_item"
>
<div
class=
"item_label"
>
日语基础
</div>
<div
class=
"item_value"
>
<q-select
filled
v-model=
"customObj.JapanBaseInfo"
:options=
"basicList"
option-label=
"Name"
<q-select
filled
v-model=
"customObj.JapanBaseInfo"
dense
:options=
"basicList"
option-label=
"Name"
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"
></q-input>
<q-input
filled
v-model=
"customObj.StuProfession"
dense
></q-input>
</div>
</div>
<div
class=
"info_item"
>
<div
class=
"item_label"
>
学历
</div>
<div
class=
"item_value"
>
<q-select
filled
v-model=
"customObj.StuEducation"
:options=
"educationList"
option-label=
"Name"
<q-select
filled
v-model=
"customObj.StuEducation"
dense
:options=
"educationList"
option-label=
"Name"
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"
:options=
"goalsList"
option-label=
"Name"
option-value=
"Id"
<q-select
filled
v-model=
"customObj.StuPurpose"
dense
:options=
"goalsList"
option-label=
"Name"
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.StuChannel"
:options=
"StuChannelList"
option-label=
"Name"
option-value=
"Id"
<q-select
filled
v-model=
"customObj.StuChannel"
dense
:options=
"StuChannelList"
option-label=
"Name"
option-value=
"Id"
emit-value
map-options
/>
</div>
</div>
<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"
></q-input>
</div>
</div>
<div
class=
"info_item"
>
<div
class=
"item_label"
>
协助人员
</div>
<div
class=
"item_value"
>
<q-select
filled
v-model=
"AssistPeople"
:options=
"AssistDropList"
option-label=
"Name"
option-value=
"Id"
emit-value
map-options
/>
<q-input
filled
v-model=
"customObj.PlatformName"
dense
></q-input>
</div>
</div>
<div
class=
"info_item"
>
...
...
@@ -194,8 +187,7 @@
getGuestBasicsEnumList
,
getGuestEducationEnumList
,
getGuestLearningGoalsEnumList
,
GetStuChannelList
,
GetAssistTypeList
GetStuChannelList
}
from
'../../../api/sale/sale'
import
{
queryEmployee
...
...
@@ -249,7 +241,6 @@
//员工列表
employeeList
:
[],
myEmployeeList
:
[],
AssistPeople
:
1
,
StuChannelList
:
[],
//收客渠道
AssistDropList
:
[]
//协助人员
}
...
...
@@ -261,13 +252,9 @@
this
.
queryGoalsList
();
this
.
getEmployeeList
();
this
.
GetStuChannelList
();
this
.
GetAssistTypeList
();
if
(
this
.
saveObj
&&
this
.
saveObj
.
StuId
>
0
)
{
this
.
customMsg
.
StuId
=
this
.
saveObj
.
StuId
;
this
.
queryStuInfo
();
if
(
this
.
customMsg
.
AssistList
&&
this
.
customMsg
.
AssistList
.
length
>
0
){
this
.
customMsg
.
AssistList
[
0
].
StuId
=
this
.
saveObj
.
StuId
;
}
}
},
mounted
()
{
...
...
@@ -275,10 +262,6 @@
methods
:
{
//保存学员信息
saveStu
()
{
if
(
this
.
customMsg
.
AssistList
&&
this
.
customMsg
.
AssistList
.
length
>
0
){
this
.
customMsg
.
AssistList
[
0
].
AssistId
=
this
.
customObj
.
CreateBy
;
this
.
customMsg
.
AssistList
[
0
].
AssistType
=
this
.
AssistPeople
;
}
saveStudent
(
this
.
customObj
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
...
...
@@ -312,14 +295,6 @@
}
})
},
//获取协助人员
GetAssistTypeList
(){
GetAssistTypeList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
){
this
.
AssistDropList
=
res
.
Data
;
}
})
},
//筛选员工
filterEmployee
(
val
,
update
,
abort
)
{
update
(()
=>
{
...
...
@@ -360,7 +335,21 @@
this
.
customObj
=
res
.
Data
;
}
});
},
//新增协助人员
addAssist
(){
let
obj
=
{
Id
:
0
,
//编号
AssistId
:
1
,
//员工编号
AssistType
:
1
,
//类型
StuId
:
1
,
//学员编号
}
this
.
customObj
.
AssistList
.
push
(
obj
);
},
//删除协助人员
delAssist
(
index
){
this
.
customObj
.
AssistList
.
splice
(
index
,
1
);
}
}
,
}
}
</
script
>
\ No newline at end of file
src/components/school/student/student-shiting.vue
View file @
c263d57a
<
style
>
.S
ysuser
_Date
.el-input__inner
{
.S
tudent
_Date
.el-input__inner
{
background
:
transparent
!important
;
border
:
0
!important
;
padding-right
:
0
!important
;
height
:
28px
!important
;
}
</
style
>
<
template
>
...
...
@@ -14,7 +16,7 @@
</div>
<template
v-if=
"isShowAdd"
>
<div
class=
"row wrap"
>
<q-input
filled
v-model=
"addMsg.ClassDate"
ref=
"ClassDate"
class=
"col-6 q-pb-lg q-pr-lg"
mask=
"date"
<q-input
filled
v-model=
"addMsg.ClassDate"
dense
ref=
"ClassDate"
class=
"col-6 q-pb-lg q-pr-lg"
mask=
"date"
label=
"预约日期"
>
<template
v-slot:append
>
<q-icon
name=
"event"
class=
"cursor-pointer"
>
...
...
@@ -24,17 +26,17 @@
</q-icon>
</
template
>
</q-input>
<div
class=
"S
ysuser
_Date col-6"
>
<q-field
filled
class=
"q-pb-lg"
>
<div
class=
"S
tudent
_Date col-6"
>
<q-field
filled
class=
"q-pb-lg"
dense
>
<
template
v-slot:control
>
<el-time-select
v-model=
"addMsg.ClassTime"
ref=
"ClassTime"
style=
"width:50%"
:picker-options=
"
{
<el-time-select
v-model=
"addMsg.ClassTime"
size=
"small"
ref=
"ClassTime"
style=
"width:50%"
:picker-options=
"
{
start: '09:00',
step: '00:15',
end: '21:00',
maxTime:addMsg.EndTime
}" placeholder="预约开始时间">
</el-time-select>
<el-time-select
v-model=
"addMsg.EndTime"
ref=
"EndTime"
style=
"width:50%"
:picker-options=
"
{
<el-time-select
v-model=
"addMsg.EndTime"
size=
"small"
dense
ref=
"EndTime"
style=
"width:50%"
:picker-options=
"
{
start: '09:00',
step: '00:15',
end: '21:00',
...
...
@@ -46,17 +48,17 @@
</div>
</div>
<div
class=
"row wrap"
>
<q-select
filled
stack-label
option-value=
"Name"
option-label=
"Name"
<q-select
filled
stack-label
option-value=
"Name"
dense
option-label=
"Name"
@
input=
"getTeacherChoose(addMsg.ClassContent)"
v-model=
"addMsg.ClassContent"
ref=
"ClassContent"
:options=
"ContentList"
:rules=
"[val => !!val || '请选择主讲内容']"
label=
"主讲内容"
:dense=
"false"
:options=
"ContentList"
:rules=
"[val => !!val || '请选择主讲内容']"
label=
"主讲内容"
class=
"col-6 q-pb-lg q-pr-lg"
emit-value
map-options
/>
<q-select
filled
stack-label
option-value=
"TId"
option-label=
"TeacherName"
v-model=
"addMsg.TeacherId"
ref=
"TeacherId"
:options=
"TeacherList"
label=
"选择教师"
:dense=
"false"
class=
"col-6 q-pb-lg"
emit-value
ref=
"TeacherId"
:options=
"TeacherList"
label=
"选择教师"
dense
class=
"col-6 q-pb-lg"
emit-value
map-options
/>
</div>
<div
class=
"row wrap"
>
<q-select
filled
stack-label
option-value=
"RoomId"
option-label=
"RoomName"
v-model=
"addMsg.ClassRoomId"
ref=
"ClassRoomId"
:options=
"ClassRoomList"
label=
"关联教室"
:dense=
"false"
class=
"col-6 q-pb-lg q-pr-lg"
<q-select
filled
stack-label
option-value=
"RoomId"
dense
option-label=
"RoomName"
v-model=
"addMsg.ClassRoomId"
ref=
"ClassRoomId"
:options=
"ClassRoomList"
label=
"关联教室"
class=
"col-6 q-pb-lg q-pr-lg"
emit-value
map-options
/>
</div>
<div
class=
"row wrap"
style=
"margin-bottom:10px;"
>
...
...
src/components/school/student/student-visit.vue
View file @
c263d57a
...
...
@@ -8,9 +8,9 @@
@
click=
"isShowAdd=false"
/>
<template
v-if=
"isShowAdd"
>
<div
class=
"row wrap"
>
<q-select
filled
option-value=
"SId"
class=
"col-6 q-pb-lg q-pr-lg"
option-label=
"SName"
<q-select
filled
option-value=
"SId"
dense
class=
"col-6 q-pb-lg q-pr-lg"
option-label=
"SName"
v-model=
"VisitMsg.School_Id"
:options=
"schoolList"
emit-value
map-options
label=
"到访校区"
/>
<q-input
filled
v-model=
"VisitMsg.Date"
class=
"col-6 q-pb-lg"
mask=
"date"
label=
"日期"
>
<q-input
filled
v-model=
"VisitMsg.Date"
dense
class=
"col-6 q-pb-lg"
mask=
"date"
label=
"日期"
>
<template
v-slot:append
>
<q-icon
name=
"event"
class=
"cursor-pointer"
>
<q-popup-proxy
ref=
"qDateProxy1"
transition-show=
"scale"
transition-hide=
"scale"
>
...
...
@@ -21,7 +21,7 @@
</q-input>
</div>
<div
class=
"row warp"
>
<q-input
filled
mask=
"time"
v-model=
"VisitMsg.VisitTime"
:rules=
"['time']"
class=
"col-6 q-pb-lg q-pr-lg"
>
<q-input
filled
mask=
"time"
dense
v-model=
"VisitMsg.VisitTime"
:rules=
"['time']"
class=
"col-6 q-pb-lg q-pr-lg"
>
<
template
v-slot:append
>
<q-icon
name=
"access_time"
class=
"cursor-pointer"
>
<q-popup-proxy
transition-show=
"scale"
transition-hide=
"scale"
>
...
...
@@ -34,12 +34,12 @@
</q-icon>
</
template
>
</q-input>
<q-select
filled
v-model=
"VisitMsg.ReceptionPersion"
@
filter=
"filterEmployee"
class=
"col-6 q-pb-lg"
<q-select
filled
v-model=
"VisitMsg.ReceptionPersion"
dense
@
filter=
"filterEmployee"
class=
"col-6 q-pb-lg"
:options=
"myEmployeeList"
option-label=
"EmployeeName"
use-input
option-value=
"Id"
emit-value
map-options
label=
"接待人"
/>
</div>
<div
class=
"row wrap"
>
<q-input
filled
v-model=
"VisitMsg.Remark"
:rows=
"3"
type=
"textarea"
class=
"col-12 q-pb-lg"
label=
"备注"
>
<q-input
filled
v-model=
"VisitMsg.Remark"
dense
:rows=
"3"
type=
"textarea"
class=
"col-12 q-pb-lg"
label=
"备注"
>
</q-input>
</div>
...
...
src/components/school/student/student-yuefang.vue
View file @
c263d57a
...
...
@@ -10,8 +10,8 @@
</div>
<template
v-if=
"isShowAdd"
>
<div
class=
"row wrap"
>
<q-input
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"yueMsg.AppointmentPoint"
label=
"约访地点"
></q-input>
<q-input
filled
v-model=
"yueMsg.AppointmentTime"
>
<q-input
filled
class=
"col-6 q-pb-lg q-pr-lg"
dense
v-model=
"yueMsg.AppointmentPoint"
label=
"约访地点"
></q-input>
<q-input
filled
v-model=
"yueMsg.AppointmentTime"
dense
>
<template
v-slot:prepend
>
<q-icon
name=
"event"
class=
"cursor-pointer"
>
<q-popup-proxy
transition-show=
"scale"
transition-hide=
"scale"
>
...
...
@@ -37,7 +37,7 @@
</q-input>
</div>
<div
class=
"row wrap"
>
<q-input
filled
v-model=
"yueMsg.Remark"
:rows=
"3"
type=
"textarea"
class=
"col-12 q-pb-lg"
label=
"备注"
>
<q-input
filled
v-model=
"yueMsg.Remark"
dense
:rows=
"3"
type=
"textarea"
class=
"col-12 q-pb-lg"
label=
"备注"
>
</q-input>
</div>
<div
class=
"row wrap"
style=
"margin-bottom:10px;"
>
...
...
src/components/school/student/studentRight-form.vue
View file @
c263d57a
...
...
@@ -34,11 +34,12 @@
</div>
<div
class=
"detail-travel"
>
<div
class=
"detail_first"
>
<q-tabs
v-model=
"ckedTab"
dense
align=
"left"
class=
"text-teal"
style=
"
width:300px;
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=
"订单"
/>
<q-tab
name=
"4"
label=
"合同"
/>
<q-tab
name=
"5"
label=
"协同人员"
/>
</q-tabs>
<div
class=
"operate_Content"
style=
"flex:1;"
>
<div
class=
"detail_Main"
>
...
...
@@ -68,6 +69,9 @@
<
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"
@
success=
"refreshStudentPage"
></student-Assit>
</
template
>
</div>
</div>
</div>
...
...
@@ -96,6 +100,7 @@
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
:
"学员管理"
...
...
@@ -108,7 +113,8 @@
studentGenjin
,
studentShiting
,
studentHetong
,
studentOrder
studentOrder
,
studentAssit
},
props
:
{
saveObj
:
{
...
...
src/components/school/student/stulist.vue
View file @
c263d57a
...
...
@@ -12,7 +12,7 @@
<div
class=
"col-2 q-table__title"
>
我的客户
</div>
<q-space
/>
<div
class=
"page-option"
>
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"md"
icon=
"add"
label=
"新增客户"
@
click=
"EditStudent(null)"
/>
<q-btn
color=
"accent"
size=
"md"
icon=
"add"
label=
"新增客户"
@
click=
"EditStudent(null)"
/>
</div>
</
template
>
<
template
v-slot:body-cell-StuIcon=
"props"
>
...
...
src/pages/school/student.vue
View file @
c263d57a
<
style
>
.Sysuser_Date
.el-
range-editor
.el-range-input
{
.Sysuser_Date
.el-
input__inner
{
background-color
:
transparent
;
width
:
100%
;
border
:
none
;
}
.Sysuser_Date
.el-range-input
{
background-color
:
transparent
;
}
</
style
>
<
template
>
<div
class=
"page-body"
>
...
...
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