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
31c83ae6
Commit
31c83ae6
authored
Aug 27, 2024
by
吴春
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增留学客户资料列表
parent
bdf46615
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
401 additions
and
13 deletions
+401
-13
student-left.vue
src/components/school/student/student-left.vue
+37
-1
studentAdd-form.vue
src/components/school/student/studentAdd-form.vue
+5
-1
stulist.vue
src/components/school/student/stulist.vue
+7
-3
newstudyAbroadprice-form.vue
src/components/studyAbroad/newstudyAbroadprice-form.vue
+5
-5
studyAbroadprice-form.vue
src/components/studyAbroad/studyAbroadprice-form.vue
+1
-1
student.vue
src/pages/school/student.vue
+2
-1
studentstudy.vue
src/pages/school/studentstudy.vue
+337
-0
routes.js
src/router/routes.js
+7
-1
No files found.
src/components/school/student/student-left.vue
View file @
31c83ae6
...
...
@@ -277,6 +277,17 @@
</div>
</div>
</div>
<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.StudentType"
style=
"width:185px"
dense
:options=
"StudentTypeList"
:disable=
"noEdit"
option-label=
"Name"
option-value=
"Id"
emit-value
map-options
label=
"留学类型"
/>
</div>
</div>
</div>
<!--2024-08-22 HK 注释-->
<!-- <div class="customer_info_component">
<div class="customer_info_Stage">
...
...
@@ -358,7 +369,7 @@
<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"
<q-select
filled
multiple
v-model=
"customObj.StuPurposeList
"
dense
:options=
"goalsList"
option-label=
"Name"
:disable=
"noEdit"
option-value=
"Id"
emit-value
map-options
/>
</div>
</div>
...
...
@@ -417,6 +428,10 @@
type
:
Number
,
default
:
null
},
StudentType
:
{
type
:
Number
,
default
:
1
},
//1-当前登录人自己创建,3-不是当前登录人创建
BelongType
:
{
type
:
Number
,
...
...
@@ -447,6 +462,7 @@
StuProfession
:
""
,
//职业
StuEducation
:
""
,
//学历
StuPurpose
:
""
,
//学习目的
StuPurposeList
:[],
CreateBy
:
""
,
//创建人
CustomerId
:
0
,
//关联同行
QQ
:
""
,
//qq
...
...
@@ -456,6 +472,7 @@
StuTel
:
""
,
//显示使用
FileVoucher
:
""
,
TelType
:
4
,
//电话关联人员
StudentType
:
this
.
StudentType
,
},
//日语基础列表
basicList
:
[],
...
...
@@ -475,6 +492,13 @@
allCustomList
:
[],
//所有同行列表
TransListData
:
[],
//转介人数据
MyTransListData
:
[],
StudentTypeList
:[{
Id
:
1
,
Name
:
"普通"
,
},{
Id
:
2
,
Name
:
"留学"
,
}],
checkMsg
:
{
StuId
:
0
,
StuRealMobile
:
""
,
...
...
@@ -670,6 +694,12 @@
});
return
;
}
if
(
this
.
customObj
.
StuPurposeList
&&
this
.
customObj
.
StuPurposeList
.
length
>
0
){
this
.
customObj
.
StuPurpose
=
this
.
customObj
.
StuPurposeList
.
toString
()
}
else
{
this
.
customObj
.
StuPurpose
=
""
;
}
if
(
this
.
customObj
.
StuRealMobile
!=
""
)
{
var
myreg
=
/^
[
1
][
3-9
][\d]{9}
/
;
if
(
!
myreg
.
test
(
this
.
customObj
.
StuRealMobile
))
{
...
...
@@ -840,6 +870,12 @@
this
.
customObj
.
StuProfession
=
tempDate
.
StuProfession
;
this
.
customObj
.
StuEducation
=
tempDate
.
StuEducation
;
this
.
customObj
.
StuPurpose
=
tempDate
.
StuPurpose
;
this
.
customObj
.
StudentType
=
tempDate
.
StudentType
;
if
(
tempDate
.
StuPurpose
&&
tempDate
.
StuPurpose
.
length
>
0
&&
tempDate
.
StuPurpose
!=
"0"
){
this
.
customObj
.
StuPurposeList
=
tempDate
.
StuPurpose
.
split
(
","
).
map
(
Number
);
}
console
.
log
(
"StuPurposeList"
,
this
.
customObj
.
StuPurposeList
);
this
.
customObj
.
CreateBy
=
tempDate
.
CreateBy
;
this
.
customObj
.
CustomerId
=
tempDate
.
CustomerId
;
this
.
customObj
.
StuType
=
tempDate
.
StuType
;
...
...
src/components/school/student/studentAdd-form.vue
View file @
31c83ae6
...
...
@@ -4,7 +4,7 @@
<div
class=
"MycustomMain"
>
<div
class=
"myCustomBottom"
>
<div
class=
"myDetail-info"
>
<student-left
:save-obj=
"saveObj"
:AddType=
"1"
@
success=
"refreshStudentPage"
@
close=
"closeCutomer"
>
<student-left
:save-obj=
"saveObj"
:AddType=
"1"
:StudentType=
"StudentType"
@
success=
"refreshStudentPage"
@
close=
"closeCutomer"
>
</student-left>
</div>
</div>
...
...
@@ -27,6 +27,10 @@
saveObj
:
{
type
:
Object
,
default
:
null
},
StudentType
:
{
type
:
Number
,
default
:
1
}
},
data
()
{
...
...
src/components/school/student/stulist.vue
View file @
31c83ae6
...
...
@@ -73,9 +73,9 @@
@
click=
"pushMode = true"
/>
<q-btn
color=
"accent"
outline
class=
"q-mr-md"
size=
"sm"
icon=
"swap_horiz"
label=
"推送课程顾问"
v-if=
"userInfo.IsCourseConsultant == 0"
@
click=
"pushMode = true"
/>
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"swap_horiz"
label=
"转订单"
<q-btn
color=
"accent"
v-if=
"StudentType !=2"
class=
"q-mr-md"
size=
"sm"
icon=
"swap_horiz"
label=
"转订单"
:disable=
"selection.length === 0"
@
click=
"transferOrder"
/>
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"swap_horiz"
label=
"转留学"
<q-btn
color=
"accent"
v-if=
"StudentType==2"
class=
"q-mr-md"
size=
"sm"
icon=
"swap_horiz"
label=
"转留学"
:disable=
"selection.length === 0"
@
click=
"transferAbroad"
/>
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"add"
label=
"新增学员"
@
click=
"EditStudent(null)"
/>
<q-btn
v-if=
"authObj && authObj.isShowDownload&&IsDownLoadStu()"
color=
"accent"
class=
"q-mr-md"
size=
"sm"
...
...
@@ -265,7 +265,7 @@
:checkType=
"checkType"
:save-obj=
"stuOption"
@
close=
"closeStuForm"
@
success=
"refreshStuList"
@
reload=
"referDataHandler"
>
</studentRight-form>
<studentAdd-form
v-if=
"isShowAdd"
:save-obj=
"stuOption"
@
close=
"closeStuForm"
@
success=
"refreshStuList"
>
<studentAdd-form
v-if=
"isShowAdd"
:
StudentType=
"StudentType"
:
save-obj=
"stuOption"
@
close=
"closeStuForm"
@
success=
"refreshStuList"
>
</studentAdd-form>
<transfer-order
v-if=
"isShowTransfer"
:select=
"selection"
@
close=
"closeStuForm"
@
success=
"refreshStuList"
>
</transfer-order>
...
...
@@ -309,6 +309,10 @@
type
:
Array
,
default
:
null
},
StudentType
:
{
type
:
Number
,
default
:
1
},
//是否显示转交按钮
isJudgeTrans
:
{
type
:
Number
,
...
...
src/components/studyAbroad/newstudyAbroadprice-form.vue
View file @
31c83ae6
...
...
@@ -42,11 +42,11 @@
</tr>
</table>
</div>
<div
class=
"text-caption q-mb-lg q-mt-lg text-grey-6"
>
<div
class=
"text-caption q-mb-lg q-mt-lg text-grey-6"
v-if=
"false"
>
<span
class=
"course_Line"
></span>
优惠
</div>
<table
style=
"border-collapse: collapse;width:100%;"
class=
"coursePrice_table"
>
<table
style=
"border-collapse: collapse;width:100%;"
class=
"coursePrice_table"
v-if=
"false"
>
<tr
style=
"height:40px;"
>
<th>
优惠
...
...
@@ -111,7 +111,7 @@
返佣设置
</th>
</tr>
<tr>
<tr
v-if=
"false"
>
<td
style=
"width:70px;"
>
同行返佣
</td>
...
...
@@ -152,7 +152,7 @@
</div>
</td>
</tr>
<tr>
<tr
v-if=
"false"
>
<td>
校代返佣
</td>
...
...
@@ -279,7 +279,7 @@
</div>
</td>
</tr>
<tr>
<tr
v-if=
"false"
>
<td>
直客返佣
</td>
...
...
src/components/studyAbroad/studyAbroadprice-form.vue
View file @
31c83ae6
...
...
@@ -18,7 +18,7 @@
@
keyup
.
native=
"checkPrice(priceObj.studyAbroadObj, 'SellPrice')"
:rules=
"[val => !!val || '请填写实际卖价']"
/>
</div>
</div>
<div
class=
"q-pt-none scroll"
style=
"max-height:60hv"
>
<div
class=
"q-pt-none scroll"
style=
"max-height:60hv"
>
<table>
<thead>
<tr
style=
"height:60px;"
>
...
...
src/pages/school/student.vue
View file @
31c83ae6
...
...
@@ -81,7 +81,7 @@
</div>
</div>
<div
class=
"page-content"
>
<stulist
:dataList=
"data"
@
success=
"refreshPage"
:loading=
"loading"
ref=
"stuList"
:authObj=
"AuthObj"
<stulist
:dataList=
"data"
@
success=
"refreshPage"
:
StudentType=
"1"
:
loading=
"loading"
ref=
"stuList"
:authObj=
"AuthObj"
:queryMsg=
"msg"
:Count=
"AuthObj.Count"
>
</stulist>
<div
class=
"row"
style=
"justify-content: flex-end;padding: 5px 20px"
>
...
...
@@ -153,6 +153,7 @@
CategoryId
:
""
,
//同行编号
IsSureConsultTime
:
0
,
// 0不限 1有效到访 2无效到访
QOrderBy
:
0
,
//排序
StudentType
:
0
,
},
dateArray
:
[],
//日期数组
pageCount
:
0
,
...
...
src/pages/school/studentstudy.vue
0 → 100644
View file @
31c83ae6
<
style
>
.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"
>
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col-3"
>
<q-input
@
keyup
.
enter=
"resetSearch"
@
clear=
"resetSearch"
dense
clearable
filled
v-model=
"msg.StuName"
label=
"昵称"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-input
@
keyup
.
enter=
"resetSearch"
@
clear=
"resetSearch"
dense
clearable
filled
v-model=
"msg.StuTel"
label=
"电话"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-input
@
keyup
.
enter=
"resetSearch"
@
clear=
"resetSearch"
dense
clearable
filled
v-model=
"msg.QQ"
label=
"QQ"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-input
@
keyup
.
enter=
"resetSearch"
@
clear=
"resetSearch"
dense
clearable
filled
v-model=
"msg.WeChatNo"
label=
"微信号"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
dense
filled
v-model=
"msg.StuType"
:options=
"customTypeList"
option-label=
"Name"
option-value=
"Id"
emit-value
map-options
label=
"客户类型"
clearable
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
dense
filled
v-model=
"msg.CreateBy"
@
filter=
"filterEmployee"
use-input
:options=
"myEmployeeList"
option-label=
"EmployeeName"
option-value=
"Id"
emit-value
map-options
label=
"负责人"
clearable
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
dense
filled
v-model=
"msg.StuStage"
:options=
"customState"
option-label=
"Name"
option-value=
"Id"
emit-value
map-options
label=
"客户状态"
clearable
/>
</div>
<div
class=
"col-3 Sysuser_Date"
>
<q-field
filled
dense
>
<template
v-slot:control
>
<el-date-picker
v-model=
"dateArray"
size=
"mini"
@
change=
"resetSearch"
value-format=
"yyyy-MM-dd"
type=
"daterange"
style=
"border:none;"
range-separator=
"至"
start-placeholder=
"开始时间"
end-placeholder=
"结束时间"
/>
</
template
>
</q-field>
</div>
<div
class=
"col-3"
>
<q-field
filled
label=
"客户状态"
dense
stack-label
>
<
template
v-slot:control
>
<q-radio
dense
v-model=
"msg.QStudentStatus"
@
input=
"resetSearch"
:val=
"1"
label=
"有效"
size=
"xs"
/>
<q-radio
dense
v-model=
"msg.QStudentStatus"
@
input=
"resetSearch"
:val=
"2"
label=
"无效"
size=
"xs"
/>
</
template
>
</q-field>
</div>
<div
class=
"col-3"
>
<q-select
filled
stack-label
option-value=
"Id"
@
input=
"resetSearch"
dense
option-label=
"Name"
v-model=
"msg.AdvisorStatus"
ref=
"AdvisorStatus"
:options=
"consultList"
clearable
label=
"当前状态"
emit-value
map-options
/>
</div>
<div
class=
"col-3"
>
<q-select
filled
stack-label
option-value=
"Id"
@
input=
"resetSearch"
dense
option-label=
"Name"
v-model=
"msg.StuChannel"
:options=
"channelList"
clearable
label=
"渠道"
emit-value
map-options
/>
</div>
<div
class=
"col-3"
>
<q-select
filled
stack-label
option-value=
"Id"
@
input=
"resetSearch"
dense
option-label=
"Name"
v-model=
"msg.IsSureConsultTime"
:options=
"visitList"
clearable
label=
"有效到访"
emit-value
map-options
/>
</div>
<div
class=
"col-3"
>
<q-select
filled
stack-label
option-value=
"Id"
@
input=
"resetSearch"
dense
option-label=
"Name"
v-model=
"msg.QOrderBy"
:options=
"sortList"
label=
"排序"
emit-value
map-options
/>
</div>
</div>
</div>
<div
class=
"page-content"
>
<stulist
:dataList=
"data"
@
success=
"refreshPage"
:StudentType=
"msg.StudentType"
:loading=
"loading"
ref=
"stuList"
:authObj=
"AuthObj"
:queryMsg=
"msg"
:Count=
"AuthObj.Count"
>
</stulist>
<div
class=
"row"
style=
"justify-content: flex-end;padding: 5px 20px"
>
<q-pagination
v-model=
"msg.pageIndex"
:max=
"pageCount"
@
input=
"changePage"
class=
"full-width justify-end"
color=
"primary"
:input=
"true"
>
</q-pagination>
</div>
</div>
</div>
</template>
<
script
>
import
{
getStudentPage
,
getSchoolDropdown
,
deleteStudent
,
createStudentAccount
,
queryStuStageList
,
GetStudentTypeList
}
from
'../../api/school/index'
import
{
queryEmployee
}
from
'../../api/users/user'
import
{
resetPassword
}
from
'../../api/users/user.js'
import
{
GetStudentAdvisorConfigList
}
from
"../../api/customerstudent/customerstudent"
;
import
{
GetStuChannelList
}
from
"../../api/sale/sale"
;
import
stulist
from
'../../components/school/student/stulist'
import
{
mapGetters
}
from
"vuex"
;
export
default
{
meta
:
{
title
:
"客户管理"
},
components
:
{
stulist
},
data
()
{
return
{
currentUrl
:
""
,
data
:
[],
loading
:
true
,
msg
:
{
pageIndex
:
1
,
pageSize
:
12
,
rowsPerPage
:
12
,
StuName
:
""
,
//昵称
StuTel
:
""
,
//电话
CreateBy
:
""
,
//负责人
StuStage
:
""
,
//客户阶段
StartTime
:
""
,
//开始时间
EndTime
:
""
,
//结束时间
QQ
:
''
,
WeChatNo
:
''
,
StuType
:
''
,
QStudentStatus
:
1
,
//客户状态 1有效 2无效
AdvisorStatus
:
''
,
//当前状态
StuChannel
:
""
,
CreateIds
:
[],
CreateType
:
""
,
//来源类型
StuSourceId
:
""
,
//来源人编号
CategoryId
:
""
,
//同行编号
IsSureConsultTime
:
0
,
// 0不限 1有效到访 2无效到访
QOrderBy
:
0
,
//排序
StudentType
:
2
,
},
dateArray
:
[],
//日期数组
pageCount
:
0
,
employeeList
:
[],
myEmployeeList
:
[],
//客户阶段状态列表
customState
:
[],
customTypeList
:
[],
//客户类型
AuthObj
:
{
isShowDownload
:
true
,
Count
:
0
},
consultList
:
[],
visitList
:
[{
Name
:
'不限'
,
Id
:
0
},
{
Name
:
'只看有效到访'
,
Id
:
1
},
{
Name
:
'只看无效到访'
,
Id
:
2
},
],
//排序
sortList
:
[{
Id
:
0
,
Name
:
"默认"
},
{
Id
:
1
,
Name
:
"跟进时间倒序"
},
{
Id
:
2
,
Name
:
"跟进时间升序"
},
],
//渠道列表
channelList
:
[],
}
},
computed
:
{
...
mapGetters
([
"userInfo"
])
},
created
()
{
this
.
getEmployeeList
();
this
.
getStuStageList
();
this
.
getCustomTypeList
();
this
.
queryChannelList
();
},
mounted
()
{
this
.
currentUrl
=
this
.
$route
.
path
;
if
(
this
.
$route
.
query
.
startTime
)
{
this
.
dateArray
.
push
(
this
.
$route
.
query
.
startTime
);
this
.
msg
.
StartTime
=
this
.
$route
.
query
.
startTime
;
}
if
(
this
.
$route
.
query
.
endTime
)
{
this
.
dateArray
.
push
(
this
.
$route
.
query
.
endTime
);
this
.
msg
.
EndTime
=
this
.
$route
.
query
.
endTime
;
}
if
(
this
.
$route
.
query
.
ChannelId
)
{
this
.
msg
.
StuChannel
=
Number
(
this
.
$route
.
query
.
ChannelId
);
}
if
(
this
.
$route
.
query
.
createBy
)
{
this
.
msg
.
CreateBy
=
Number
(
this
.
$route
.
query
.
createBy
);
}
if
(
this
.
$route
.
query
.
CreateType
)
{
this
.
msg
.
CreateType
=
Number
(
this
.
$route
.
query
.
CreateType
);
}
if
(
this
.
$route
.
query
.
StuSourceId
)
{
this
.
msg
.
StuSourceId
=
Number
(
this
.
$route
.
query
.
StuSourceId
);
}
if
(
this
.
$route
.
query
.
CategoryId
)
{
this
.
msg
.
CategoryId
=
this
.
$route
.
query
.
CategoryId
;
}
this
.
getStatusList
();
this
.
getStudent
()
},
methods
:
{
//获取渠道列表
queryChannelList
()
{
GetStuChannelList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
channelList
=
res
.
Data
;
}
})
},
//获取跟进状态下拉
getStatusList
()
{
let
msg
=
{
Name
:
''
}
GetStudentAdvisorConfigList
(
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
consultList
=
res
.
Data
;
}
})
},
//获取客户阶段列表
getStuStageList
()
{
queryStuStageList
().
then
(
res
=>
{
this
.
customState
=
res
.
Data
;
})
},
//获取客户类型
getCustomTypeList
()
{
GetStudentTypeList
().
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
customTypeList
=
res
.
Data
;
}
})
},
//获取员工列表
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
);
});
},
resetSearch
()
{
this
.
msg
.
pageIndex
=
1
;
if
(
this
.
schoolTemp
)
{
this
.
msg
.
School_Id
=
this
.
schoolTemp
.
SId
}
else
{
this
.
msg
.
School_Id
=
0
}
this
.
getStudent
()
},
changePage
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getStudent
();
},
getStudent
()
{
if
(
this
.
dateArray
&&
this
.
dateArray
.
length
>
0
)
{
this
.
msg
.
StartTime
=
this
.
dateArray
[
0
];
this
.
msg
.
EndTime
=
this
.
dateArray
[
1
];
}
else
{
this
.
msg
.
StartTime
=
''
;
this
.
msg
.
EndTime
=
''
;
}
this
.
loading
=
true
;
getStudentPage
(
this
.
msg
).
then
(
res
=>
{
this
.
loading
=
false
;
this
.
data
=
res
.
Data
.
PageData
this
.
pageCount
=
res
.
Data
.
PageCount
this
.
AuthObj
.
Count
=
res
.
Data
.
Count
this
.
data
.
forEach
(
x
=>
{
if
(
x
.
CreateBy
!=
this
.
userInfo
.
Id
)
{
x
.
BelongType
=
3
;
}
else
{
x
.
BelongType
=
1
;
}
});
}).
catch
(()
=>
{
this
.
loading
=
false
})
},
refreshPage
()
{
this
.
getStudent
()
},
},
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
src/router/routes.js
View file @
31c83ae6
...
...
@@ -58,6 +58,11 @@ const routes = [{
component
:
()
=>
import
(
"pages/school/student.vue"
)
},
{
path
:
"/school/studentstudy"
,
//留学学员管理
component
:
()
=>
import
(
"pages/school/studentstudy.vue"
)
},
{
path
:
"/school/studentCourse"
,
//学员上课记录管理
component
:
()
=>
...
...
@@ -1910,7 +1915,8 @@ const routes = [{
path
:
"/stuMan/stuList"
,
//学管 学员名单
component
:
()
=>
import
(
"pages/stuMan/stuList"
)
},
{
}
,
{
path
:
"/stuMan/visitorRecord"
,
//学管 访问管理
component
:
()
=>
import
(
"pages/stuMan/visitorRecord"
)
...
...
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