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
e7a2a2b9
Commit
e7a2a2b9
authored
Dec 16, 2021
by
罗超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
0692a8d7
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
1770 additions
and
707 deletions
+1770
-707
peemanagement.js
src/api/sale/peemanagement.js
+11
-0
orderlist.vue
src/components/sale/orderlist.vue
+1
-0
batchTransfer-order.vue
src/components/school/student/batchTransfer-order.vue
+413
-0
b2bAllCustomer.vue
src/pages/sale/b2bAllCustomer.vue
+189
-0
studentList.vue
src/pages/sale/studentList.vue
+1150
-706
routes.js
src/router/routes.js
+6
-1
No files found.
src/api/sale/peemanagement.js
View file @
e7a2a2b9
...
...
@@ -239,3 +239,14 @@ export function setCustomerCareOf(data) {
data
})
}
/**
* 我的客户批量转入
*
*/
export
function
setMyStudentToGuest
(
data
)
{
return
request
({
url
:
'order/SetMyStudentToGuest'
,
method
:
'post'
,
data
})
}
\ No newline at end of file
src/components/sale/orderlist.vue
View file @
e7a2a2b9
...
...
@@ -2209,6 +2209,7 @@ export default {
OrderId
:
item
.
OrderId
,
ClassId
:
item
.
ClassId
,
SourceId
:
item
.
SourceId
,
CustomerId
:
item
.
CustomerId
,
isShow
:
this
.
AuthorityObj
.
isShowGuestBtn
}
});
...
...
src/components/school/student/batchTransfer-order.vue
0 → 100644
View file @
e7a2a2b9
<
template
>
<div
class=
"batchTransfer"
>
<q-dialog
v-model=
"persistent"
persistent
transition-show=
"scale"
transition-hide=
"scale"
@
hide=
"$emit('close')"
>
<q-card
style=
"width: 800px;max-width:800px;"
>
<q-card-section
class=
"row items-center q-pb-none"
>
<div
class=
"text-h6"
>
批量录入
</div>
<q-space
/>
<q-btn
icon=
"close"
flat
round
dense
v-close-popup
/>
</q-card-section>
<q-card-section
class=
"row items-center q-pb-none"
>
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col-6"
>
<q-input
@
input=
"resetSearch"
clearable
filled
v-model=
"msg.StuName"
label=
"昵称"
maxlength=
"20"
/>
</div>
<div
class=
"col-6"
>
<q-input
@
input=
"resetSearch"
clearable
filled
v-model=
"msg.StuTel"
label=
"电话"
maxlength=
"20"
/>
</div>
<div
class=
"col-6"
>
<q-select
@
input=
"resetSearch"
filled
v-model=
"msg.StuStage"
:options=
"customState"
option-label=
"Name"
option-value=
"Id"
emit-value
map-options
label=
"客户状态"
clearable
/>
</div>
<div
class=
"col-6"
>
<q-field
filled
>
<template
v-slot:control
>
<el-date-picker
v-model=
"dateArray"
@
change=
"resetSearch"
value-format=
"yyyy-MM-dd"
type=
"daterange"
style=
"border:none;"
range-separator=
"至"
start-placeholder=
"开始时间"
end-placeholder=
"结束时间"
popper-class=
"popper"
/>
</
template
>
</q-field>
</div>
</div>
</div>
</q-card-section>
<q-card-section
class=
"q-pt-none scroll"
>
<q-table
:pagination=
"pageMsg"
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
selection=
"multiple"
:selected
.
sync=
"selection"
class=
"sticky-right-column-table sticky-tow-column-table"
separator=
"none"
:data=
"data"
:columns=
"columns"
row-key=
"StuId"
>
<
template
v-slot:top=
"props"
>
</
template
>
<
template
v-slot:body-cell-StuSex=
"props"
>
<q-td
:props=
"props"
>
<q-badge
:color=
"props.value == 1 ? 'negative' : 'primary'"
:label=
"props.value == 1 ? '女' : '男'"
/>
</q-td>
</
template
>
<
template
v-slot:body-cell-AssistList=
"props"
>
<q-td
auto-width
:props=
"props"
>
<template
v-if=
"props.row.AssistList"
>
<template
v-if=
"props.row.AssistList.length == 1"
>
{{
props
.
row
.
AssistList
[
0
].
AssistName
}}
</
template
>
<
template
v-if=
"props.row.AssistList.length > 1"
>
{{
props
.
row
.
AssistList
[
0
].
AssistName
}}
:
<span
class=
"stulistNum"
>
{{
props
.
row
.
AssistList
.
length
}}
<q-popup-proxy>
<q-banner>
<div
style=
"max-height:600px;overflow-y:auto;"
>
<table
class=
"stuListTable"
style=
"border-collapse:collapse;"
>
<tr>
<th>
协同人
</th>
</tr>
<tr
v-for=
"(sItem, sIndex) in props.row.AssistList"
style=
"border-bottom:1px dashed #d1d1d1;"
:key=
"sIndex"
>
<td>
{{
sItem
.
AssistName
}}
</td>
</tr>
</table>
</div>
</q-banner>
</q-popup-proxy>
</span>
</
template
>
<
template
v-if=
"props.row.AssistList.length == 0"
>
无
</
template
>
</template>
</q-td>
</template>
<
template
v-slot:bottom
>
<q-pagination
class=
"full-width justify-end"
v-model=
"msg.pageIndex"
color=
"primary"
:max=
"pageCount"
:input=
"true"
@
input=
"changePage"
/>
</
template
>
</q-table>
</q-card-section>
<q-card-actions
align=
"right"
class=
"bg-white"
>
<q-btn
label=
"取消"
flat
color=
"grey-10"
style=
"font-weight:400 !important"
v-close-popup
/>
<q-btn
label=
"保存"
color=
"accent q-px-md"
style=
"font-weight:400 !important"
@
click=
"save"
:disable=
"selection.length == 0"
/>
</q-card-actions>
</q-card>
</q-dialog>
</div>
</template>
<
script
>
import
{
getStudentPage
,
getSchoolDropdown
,
deleteStudent
,
createStudentAccount
,
queryStuStageList
}
from
"../../../api/school/index"
;
import
{
setMyStudentToGuest
}
from
"../../../api/sale/peemanagement"
;
export
default
{
props
:
{
OrderId
:{
type
:[
Number
,
String
],
default
:
0
}
},
components
:
{},
data
()
{
return
{
persistent
:
true
,
data
:
[],
loading
:
true
,
msg
:
{
pageIndex
:
1
,
pageSize
:
5
,
rowsPerPage
:
12
,
StuName
:
""
,
StuTel
:
""
,
Status
:
"-1"
,
CreateBy
:
""
,
IsQueryMyStu
:
1
,
StuStage
:
""
,
//客户阶段
StartTime
:
""
,
//开始时间
EndTime
:
""
,
//结束时间
CustomerId
:
0
,
BelongType
:
2
,
//归属类型
QCustomerType
:
0
,
},
dateArray
:
[],
//日期数组
pageCount
:
0
,
//客户阶段状态列表
customState
:
[],
myCustomerList
:
[],
//同行列表
allCustomerList
:
[],
//所有同行列表
dateArray
:
[],
//日期数组
pageCount
:
0
,
selection
:
[],
pageMsg
:
{
rowsPerPage
:
12
},
columns
:
[
{
name
:
"StuName"
,
required
:
true
,
label
:
"昵称"
,
align
:
"left"
,
field
:
row
=>
row
.
StuName
},
{
name
:
"StuSex"
,
label
:
"性别"
,
field
:
"StuSex"
,
align
:
"left"
},
{
name
:
"StuTel"
,
label
:
"电话"
,
field
:
"StuTel"
,
align
:
"left"
},
{
name
:
"StuStageName"
,
label
:
"客户阶段"
,
field
:
"StuStageName"
,
align
:
"left"
},
{
name
:
"StuProfession"
,
label
:
"职业"
,
field
:
"StuProfession"
,
align
:
"left"
},
{
name
:
"StuEducationName"
,
label
:
"学历"
,
field
:
"StuEducationName"
,
align
:
"left"
},
{
name
:
"StuPurposeName"
,
label
:
"目的"
,
field
:
"StuPurposeName"
,
align
:
"left"
},
{
name
:
"CreateByName"
,
label
:
"负责人"
,
align
:
"left"
,
field
:
"CreateByName"
},
{
name
:
"AssistList"
,
label
:
"协同人"
,
align
:
"left"
,
field
:
"AssistList"
},
{
name
:
"CreateTypeStr"
,
label
:
"客户来源"
,
field
:
"CreateTypeStr"
,
align
:
"left"
},
{
name
:
"StuSourceIdName"
,
label
:
"来源关联人"
,
field
:
"StuSourceIdName"
,
align
:
"left"
},
{
name
:
"StuChannelName"
,
label
:
"收客渠道"
,
field
:
"StuChannelName"
,
align
:
"left"
},
{
name
:
"VisitCount"
,
label
:
"到访次数"
,
field
:
"VisitCount"
,
align
:
"left"
},
{
name
:
"TrialLessonCount"
,
label
:
"试听次数"
,
field
:
"TrialLessonCount"
,
align
:
"left"
},
{
name
:
"CreateTimeStr"
,
label
:
"创建时间"
,
field
:
"CreateTimeStr"
,
align
:
"left"
},
{
name
:
"CustomerName"
,
label
:
"所属同行"
,
field
:
"CustomerName"
,
align
:
"left"
}
],
};
},
created
()
{
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
CustomerId
)
{
this
.
msg
.
CustomerId
=
this
.
$route
.
query
.
CustomerId
;
}
else
{
this
.
msg
.
QCustomerType
=
1
}
this
.
getSchool
();
this
.
getStuStageList
();
},
mounted
()
{
this
.
getStudent
();
},
methods
:
{
//获取客户阶段列表
getStuStageList
()
{
queryStuStageList
().
then
(
res
=>
{
this
.
customState
=
res
.
Data
;
});
},
resetSearch
()
{
this
.
msg
.
pageIndex
=
1
;
this
.
getStudent
();
},
changePage
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getStudent
();
},
getSchool
()
{
getSchoolDropdown
({}).
then
(
res
=>
{
this
.
schoolList
=
res
.
Data
;
});
},
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
;
})
.
catch
(()
=>
{
this
.
loading
=
false
;
});
},
save
()
{
const
setMsg
=
{
OrderId
:
this
.
OrderId
,
StuIds
:
this
.
selection
.
map
(
e
=>
e
.
StuId
).
toString
()
}
setMyStudentToGuest
(
setMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
){
this
.
persistent
=
false
this
.
$emit
(
"success"
)
}
});
}
}
};
</
script
>
<
style
scoped
>
/
deep
/
.el-input__inner
,
/
deep
/
.el-range-input
{
background-color
:
transparent
;
border
:
none
;
}
</
style
>
<
style
>
.popper
{
z-index
:
9999
!important
;
}
::-webkit-scrollbar
{
width
:
5px
;
height
:
5px
;
}
::-webkit-scrollbar-track
{
background
:
#fff
;
border-radius
:
2px
;
}
::-webkit-scrollbar-thumb
{
background
:
#444
;
border-radius
:
10px
;
}
::-webkit-scrollbar-thumb:hover
{
background
:
#999
;
}
::-webkit-scrollbar-corner
{
background
:
#204754
;
}
</
style
>
src/pages/sale/b2bAllCustomer.vue
0 → 100644
View file @
e7a2a2b9
<
style
>
.page-content
p
{
margin
:
0
!important
;
}
.quetion_Title
{
background
:
transparent
!important
;
text-overflow
:
ellipsis
;
overflow
:
hidden
;
white-space
:
nowrap
;
width
:
400px
;
}
</
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
@
input=
"resetSearch"
filled
clearable
v-model=
"msg.CustomerName"
label=
"同业名称"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-input
@
input=
"resetSearch"
filled
clearable
v-model=
"msg.CustomerId"
label=
"同业ID"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-input
@
input=
"resetSearch"
filled
clearable
v-model=
"msg.ContactNumber"
label=
"电话"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
clearable
filled
v-model=
"msg.ApproveState"
:options=
"ApproveStateList"
emit-value
map-options
label=
"审核状态"
/>
</div>
</div>
</div>
<div
class=
"page-content"
>
<div>
<q-tabs
style=
"margin-bottom:20px;"
v-model=
"tabCheck"
@
input=
"resetSearch()"
narrow-indicator
dense
align=
"left"
class=
"text-primary"
>
<q-tab
:ripple=
"false"
:name=
"1"
label=
"正式客户"
/>
<q-tab
:ripple=
"false"
:name=
"2"
label=
"非正式客户"
/>
<q-tab
:ripple=
"false"
:name=
"3"
label=
"未通过客户"
/>
<q-tab
:ripple=
"false"
:name=
"4"
label=
"黑名单客户"
/>
</q-tabs>
</div>
<b2bcustomlist
:dataList=
"dataList"
:authObj=
"authObj"
:loading=
"loading"
@
success=
"getList"
:visibleColumns=
"visibleColumns"
sticky=
"sticky-tow-column-table sticky-right-column-table"
></b2bcustomlist>
<q-pagination
class=
"full-width justify-end"
v-model=
"msg.pageIndex"
color=
"primary"
:max=
"pageCount"
:input=
"true"
@
input=
"changePage"
/>
</div>
</div>
</
template
>
<
script
>
import
{
GetCustomerPage
,
RemoveCustomer
}
from
"../../api/sale/peemanagement"
;
import
b2bcustomlist
from
"../../components/sale/b2bcustomlist"
;
export
default
{
meta
:
{
title
:
"同行管理"
},
components
:
{
b2bcustomlist
},
data
()
{
return
{
pageCount
:
0
,
msg
:
{
pageIndex
:
1
,
pageSize
:
12
,
rowsPerPage
:
12
,
CustomerName
:
""
,
//客户名称
ContactNumber
:
""
,
//联系电话
ApproveState
:
""
,
//审核状态
QCustomerState
:
""
//账号状态
},
loading
:
false
,
visibleColumns
:
[
"CustomerName"
,
"CustomerType"
,
"EnterpriseName"
,
"ContactNumber"
,
"StuNum"
,
"OrderNum"
,
"OrderSales"
,
"ApproveStateStr"
,
"CreateByName"
,
"CreateTimeStr"
,
],
tabCheck
:
1
,
//审核状态列表
ApproveStateList
:
[
{
label
:
"通过"
,
value
:
"1"
},
{
label
:
"拒绝"
,
value
:
"2"
}
],
dataList
:
[],
//判断显示
authObj
:
{
isShowEdit
:
true
,
//显示新增、修改、删除
isShowBankBook
:
true
,
//显示幸福存折
isShowRebate
:
true
//是否显示返佣
}
};
},
created
()
{
},
mounted
()
{
this
.
getList
();
},
methods
:
{
//重新查询
resetSearch
()
{
this
.
msg
.
pageIndex
=
1
;
this
.
getList
();
},
//翻页
changePage
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getList
();
},
//获取分页数据
getList
()
{
this
.
msg
.
QCustomerState
=
this
.
tabCheck
;
GetCustomerPage
(
this
.
msg
)
.
then
(
res
=>
{
this
.
dataList
=
res
.
Data
.
PageData
;
this
.
loading
=
false
;
this
.
pageCount
=
res
.
Data
.
PageCount
;
})
.
catch
(()
=>
{
this
.
loading
=
false
;
});
}
}
};
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
src/pages/sale/studentList.vue
View file @
e7a2a2b9
<
style
>
._addUpload_stu
{
._addUpload_stu
{
display
:
block
;
margin-top
:
15px
;
}
}
._addUpload_stu
img
{
._addUpload_stu
img
{
width
:
100%
;
}
}
._addUpload_stu
>
div
{
._addUpload_stu
>
div
{
display
:
inline-block
;
width
:
138px
;
height
:
92px
;
...
...
@@ -19,22 +19,22 @@
padding
:
5px
;
margin-right
:
10px
;
position
:
relative
;
}
}
._addUpload_stu
>
div
:hover
{
._addUpload_stu
>
div
:hover
{
background-color
:
#f5f5f5
;
}
}
.stuCard
.el-upload-dragger
{
.stuCard
.el-upload-dragger
{
font-size
:
28px
;
color
:
#8c939d
;
width
:
126px
;
height
:
80px
;
line-height
:
41px
;
text-align
:
center
;
}
}
._addUpload_stu
.icon-guanbi1
{
._addUpload_stu
.icon-guanbi1
{
font-size
:
12px
;
color
:
white
;
display
:
inline-block
;
...
...
@@ -48,47 +48,80 @@
width
:
20px
;
text-align
:
center
;
line-height
:
20px
;
}
}
.el-image-viewer__wrapper
{
.el-image-viewer__wrapper
{
z-index
:
9999
!important
;
}
.pri_Color
{
}
.pri_Color
{
color
:
var
(
--q-color-primary
);
}
}
</
style
>
<
template
>
<div
class=
"page-body"
>
<div
class=
"page-content student_List"
>
<q-table
:pagination=
"msg"
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
class=
"stickycreatInsertStr-column-table"
separator=
"none"
:data=
"data"
:columns=
"columns"
row-key=
"name"
:visible-columns=
"visibleColumns"
>
<q-table
:pagination=
"msg"
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
class=
"stickycreatInsertStr-column-table"
separator=
"none"
:data=
"data"
:columns=
"columns"
row-key=
"name"
:visible-columns=
"visibleColumns"
>
<template
v-slot:top=
"props"
>
<div
class=
"col-2 q-table__title"
@
click=
"goreturn"
style=
"cursor:pointer"
>
返回
</div>
<div
class=
"col-2 q-table__title"
@
click=
"goreturn"
style=
"cursor:pointer"
>
返回
</div>
<q-space
/>
<div
class=
"page-option"
>
<q-btn
color=
"accent"
size=
"sm"
v-if=
"isShowBtn"
icon=
"add"
label=
"新增名单"
@
click=
"addxue"
/>
<q-btn
color=
"accent"
size=
"sm"
v-if=
"isShowBtn"
icon=
"add"
label=
"批量录入"
@
click=
"showBetchTransfer = true"
class=
"q-mr-md"
/>
<q-btn
color=
"accent"
size=
"sm"
v-if=
"isShowBtn"
icon=
"add"
label=
"新增名单"
@
click=
"addxue"
/>
</div>
</
template
>
<
template
v-slot:body-cell-Sex=
"props"
>
<q-td
:props=
"props"
>
<span>
{{
props
.
row
.
Sex
==
1
?
'男'
:
'女'
}}
</span>
<span>
{{
props
.
row
.
Sex
==
1
?
"男"
:
"女"
}}
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-CourseName=
"props"
>
<q-td
:props=
"props"
>
<span>
{{
props
.
row
.
CourseName
}}
<div
style=
"color:red;"
v-if=
"props.row.IsChaBan==1"
>
<span
>
{{
props
.
row
.
CourseName
}}
<div
style=
"color:red;"
v-if=
"props.row.IsChaBan == 1"
>
插班报入
<q-tooltip
:offset=
"[10, 10]"
>
开始课时:
{{
props
.
row
.
StartClassHours
}}
<br
/>
课程:
{{
props
.
row
.
CourseName
}}
<br
/>
生效日期:
{{
props
.
row
.
EffectTime
}}
<br
/>
生效状态:
{{
props
.
row
.
EffectStatusStr
}}
<br
/>
<template
v-if=
"props.row.UpOrderId&&props.row.UpOrderId>0"
>
前置订单:
{{
props
.
row
.
UpOrderId
}}
<br
/>
</
template
>
<q-tooltip
:offset=
"[10, 10]"
>
开始课时:
{{
props
.
row
.
StartClassHours
}}
<br
/>
课程:
{{
props
.
row
.
CourseName
}}
<br
/>
生效日期:
{{
props
.
row
.
EffectTime
}}
<br
/>
生效状态:
{{
props
.
row
.
EffectStatusStr
}}
<br
/>
<template
v-if=
"props.row.UpOrderId && props.row.UpOrderId > 0"
>
前置订单:
{{
props
.
row
.
UpOrderId
}}
<br
/>
</
template
>
</q-tooltip>
</div>
</span>
...
...
@@ -98,190 +131,539 @@
<q-td>
<el-popover
placement=
"bottom"
title=
""
width=
"350"
trigger=
"hover"
>
<div
style=
"width:300px;height:200px;"
>
<template
v-if=
"props.row.BackClassList&&props.row.BackClassList.length>0"
>
<div>
退课单据
</div><br
/>
<span
v-for=
"(item,index) in props.row.BackClassList"
:key=
"index"
<template
v-if=
"
props.row.BackClassList &&
props.row.BackClassList.length > 0
"
>
<div>
退课单据
</div>
<br
/>
<span
v-for=
"(item, index) in props.row.BackClassList"
:key=
"index"
style=
"cursor:pointer;color:blue;text-decoration:underline;"
@
click=
"goEduReceiptInfo(item.Id)"
>
{{
item
.
Id
}}
</span>
@
click=
"goEduReceiptInfo(item.Id)"
>
{{
item
.
Id
}}
</span
>
</
template
>
<
template
v-if=
"props.row.StopClassList&&props.row.StopClassList.length>0"
>
<div>
停课单据
</div><br
/>
<span
v-for=
"(item,index) in props.row.StopClassList"
:key=
"index"
<
template
v-if=
"
props.row.StopClassList &&
props.row.StopClassList.length > 0
"
>
<div>
停课单据
</div>
<br
/>
<span
v-for=
"(item, index) in props.row.StopClassList"
:key=
"index"
style=
"cursor:pointer;color:blue;text-decoration:underline;"
@
click=
"goEduReceiptInfo(item.Id)"
>
{{
item
.
Id
}}
</span>
@
click=
"goEduReceiptInfo(item.Id)"
>
{{
item
.
Id
}}
</span
>
</
template
>
<
template
v-if=
"props.row.InvitationClassList&&props.row.InvitationClassList.length>0"
>
<div>
临时上课邀请单据
</div><br
/>
<span
v-for=
"(item,index) in props.row.InvitationClassList"
:key=
"index"
<
template
v-if=
"
props.row.InvitationClassList &&
props.row.InvitationClassList.length > 0
"
>
<div>
临时上课邀请单据
</div>
<br
/>
<span
v-for=
"(item, index) in props.row.InvitationClassList"
:key=
"index"
style=
"cursor:pointer;color:blue;text-decoration:underline;"
@
click=
"goEduReceiptInfo(item.Id)"
>
{{
item
.
Id
}}
</span>
@
click=
"goEduReceiptInfo(item.Id)"
>
{{
item
.
Id
}}
</span
>
</
template
>
<
template
v-if=
"props.row.OrderTransClassList&&props.row.OrderTransClassList.length>0"
>
<div>
订单转班单据
</div><br
/>
<span
v-for=
"(item,index) in props.row.OrderTransClassList"
:key=
"index"
<
template
v-if=
"
props.row.OrderTransClassList &&
props.row.OrderTransClassList.length > 0
"
>
<div>
订单转班单据
</div>
<br
/>
<span
v-for=
"(item, index) in props.row.OrderTransClassList"
:key=
"index"
style=
"cursor:pointer;color:blue;text-decoration:underline;"
@
click=
"goEduReceiptInfo(item.Id)"
>
{{
item
.
Id
}}
</span>
@
click=
"goEduReceiptInfo(item.Id)"
>
{{
item
.
Id
}}
</span
>
</
template
>
<
template
v-if=
"props.row.OrderSplitClassList&&props.row.OrderSplitClassList.length>0"
>
<div>
订单分拆单据
</div><br
/>
<span
v-for=
"(item,index) in props.row.OrderSplitClassList"
:key=
"index"
<
template
v-if=
"
props.row.OrderSplitClassList &&
props.row.OrderSplitClassList.length > 0
"
>
<div>
订单分拆单据
</div>
<br
/>
<span
v-for=
"(item, index) in props.row.OrderSplitClassList"
:key=
"index"
style=
"cursor:pointer;color:blue;text-decoration:underline;"
@
click=
"goEduReceiptInfo(item.Id)"
>
{{
item
.
Id
}}
</span>
@
click=
"goEduReceiptInfo(item.Id)"
>
{{
item
.
Id
}}
</span
>
</
template
>
</div>
<span
slot=
"reference"
class=
"pri_Color"
v-if=
"(props.row.BackClassList&&props.row.BackClassList.length>0)||(props.row.StopClassList&&props.row.StopClassList.length>0)
||(props.row.InvitationClassList&&props.row.InvitationClassList.length>0)||(props.row.OrderTransClassList&&props.row.OrderTransClassList.length>0)
||(props.row.OrderSplitClassList&&props.row.OrderSplitClassList.length>0)"
>
查看单据
</span>
<span
slot=
"reference"
class=
"pri_Color"
v-if=
"
(props.row.BackClassList &&
props.row.BackClassList.length > 0) ||
(props.row.StopClassList &&
props.row.StopClassList.length > 0) ||
(props.row.InvitationClassList &&
props.row.InvitationClassList.length > 0) ||
(props.row.OrderTransClassList &&
props.row.OrderTransClassList.length > 0) ||
(props.row.OrderSplitClassList &&
props.row.OrderSplitClassList.length > 0)
"
>
查看单据
</span
>
</el-popover>
</q-td>
</template>
<
template
v-slot:bottom
>
<q-pagination
class=
"full-width justify-end"
v-model=
"msg.pageIndex"
color=
"primary"
:max=
"pageCount"
:input=
"true"
@
input=
"changePage"
/>
<q-pagination
class=
"full-width justify-end"
v-model=
"msg.pageIndex"
color=
"primary"
:max=
"pageCount"
:input=
"true"
@
input=
"changePage"
/>
</
template
>
<
template
v-slot:body-cell-optioned=
"props"
v-if=
"isShowBtn"
>
<q-td
:props=
"props"
>
<q-btn
flat
size=
"xs"
icon=
"edit"
color=
"accent"
style=
"font-weight:400"
label=
"编辑"
@
click=
"EditRole(props.row)"
/>
<q-btn
flat
size=
"xs"
icon=
"iconfont icon-shanchu"
color=
"negative"
style=
"font-weight:400"
class=
"q-mr-xs"
label=
"删除"
@
click=
"deleteUser(props.row)"
/>
<q-btn
flat
size=
"xs"
icon=
"edit"
color=
"accent"
style=
"font-weight:400"
label=
"编辑"
@
click=
"EditRole(props.row)"
/>
<q-btn
flat
size=
"xs"
icon=
"iconfont icon-shanchu"
color=
"negative"
style=
"font-weight:400"
class=
"q-mr-xs"
label=
"删除"
@
click=
"deleteUser(props.row)"
/>
</q-td>
</
template
>
</q-table>
</div>
<q-dialog
v-model=
"persistent"
content-class=
"bg-grey-1"
persistent
transition-show=
"scale"
transition-hide=
"scale"
>
<q-dialog
v-model=
"persistent"
content-class=
"bg-grey-1"
persistent
transition-show=
"scale"
transition-hide=
"scale"
>
<q-card
style=
"width: 800px;max-width:900px;"
class=
"stuCard"
>
<q-card-section>
<div
class=
"text-h6"
>
{{addMsg.Id==0?'新增学员':'修改学员'}}
</div>
<div
class=
"text-h6"
>
{{ addMsg.Id == 0 ? "新增学员" : "修改学员" }}
</div>
</q-card-section>
<div
class=
"text-caption q-mb-lg q-px-md text-grey-6"
>
基础信息
</div>
<q-card-section
class=
"q-pt-none"
v-if=
"msg.ClassId
>
0"
>
<q-card-section
class=
"q-pt-none"
v-if=
"msg.ClassId
>
0"
>
<div
class=
"row wrap"
>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.GuestName"
ref=
"GuestName"
label=
"姓名"
:rules=
"[val => !!val || '姓名']"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.GuestName"
ref=
"GuestName"
label=
"姓名"
:rules=
"[val => !!val || '姓名']"
/>
<div
class=
"col-6 q-pb-lg q-pr-lg"
>
<q-radio
v-model=
"addMsg.Sex"
val=
"1"
label=
"男"
/>
<q-radio
v-model=
"addMsg.Sex"
val=
"2"
label=
"女"
/>
</div>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.Profession"
label=
"职业"
:rules=
"[val => !!val || '职业']"
/>
<q-input
filled
v-model=
"addMsg.BirthDate"
:rules=
"[val => !!val || '请选择出生日期']"
class=
"col-6 q-pb-lg"
ref=
"BirthDate"
mask=
"date"
label=
"出生日期"
>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.Profession"
label=
"职业"
:rules=
"[val => !!val || '职业']"
/>
<q-input
filled
v-model=
"addMsg.BirthDate"
:rules=
"[val => !!val || '请选择出生日期']"
class=
"col-6 q-pb-lg"
ref=
"BirthDate"
mask=
"date"
label=
"出生日期"
>
<
template
v-slot:append
>
<q-icon
name=
"event"
class=
"cursor-pointer"
>
<q-popup-proxy
ref=
"qDateProxy3"
transition-show=
"scale"
transition-hide=
"scale"
>
<q-date
v-model=
"addMsg.BirthDate"
@
input=
"() => $refs.qDateProxy3.hide()"
/>
<q-popup-proxy
ref=
"qDateProxy3"
transition-show=
"scale"
transition-hide=
"scale"
>
<q-date
v-model=
"addMsg.BirthDate"
@
input=
"() => $refs.qDateProxy3.hide()"
/>
</q-popup-proxy>
</q-icon>
</
template
>
</q-input>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
maxlength=
"5"
disable
v-model=
"addMsg.TotalHours"
label=
"总课时"
:rules=
"[val => !!val || '请填写总课时']"
@
keyup
.
native=
"checkInteger(addMsg,'TotalHours')"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
ref=
"Mobile"
maxlength=
"20"
v-model=
"addMsg.Mobile"
label=
"电话"
:rules=
"[val => !!val || '电话']"
/>
<q-select
class=
"col-6 q-pb-lg q-pr-lg"
option-value=
"Name"
ref=
"Basics"
standout=
"bg-primary text-white"
option-label=
"Name"
v-model=
"addMsg.Basics"
:options=
"GBList"
emit-value
map-options
label=
"语言基础"
use-input
new-value-mode=
"add-unique"
hint=
"自己输入语言基础的话,输入之后按回车!"
/>
<q-select
class=
"col-6 q-pb-lg"
option-value=
"Id"
standout=
"bg-primary text-white"
option-label=
"Name"
v-model=
"addMsg.Education"
:options=
"GEList"
emit-value
map-options
label=
"最高学历"
/>
<q-select
class=
"col-6 q-pb-lg q-pr-lg"
option-value=
"Id"
standout=
"bg-primary text-white"
option-label=
"Name"
v-model=
"addMsg.LearningGoals"
:options=
"GLList"
emit-value
map-options
label=
"学习目的"
/>
<q-select
class=
"col-6 q-pb-lg"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
v-model=
"addMsg.GuestSource"
:options=
"OFList"
emit-value
map-options
label=
"客人来源"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.ContactAddress"
label=
"现居住地址"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
maxlength=
"5"
disable
v-model=
"addMsg.TotalHours"
label=
"总课时"
:rules=
"[val => !!val || '请填写总课时']"
@
keyup
.
native=
"checkInteger(addMsg, 'TotalHours')"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
ref=
"Mobile"
maxlength=
"20"
v-model=
"addMsg.Mobile"
label=
"电话"
:rules=
"[val => !!val || '电话']"
/>
<q-select
class=
"col-6 q-pb-lg q-pr-lg"
option-value=
"Name"
ref=
"Basics"
standout=
"bg-primary text-white"
option-label=
"Name"
v-model=
"addMsg.Basics"
:options=
"GBList"
emit-value
map-options
label=
"语言基础"
use-input
new-value-mode=
"add-unique"
hint=
"自己输入语言基础的话,输入之后按回车!"
/>
<q-select
class=
"col-6 q-pb-lg"
option-value=
"Id"
standout=
"bg-primary text-white"
option-label=
"Name"
v-model=
"addMsg.Education"
:options=
"GEList"
emit-value
map-options
label=
"最高学历"
/>
<q-select
class=
"col-6 q-pb-lg q-pr-lg"
option-value=
"Id"
standout=
"bg-primary text-white"
option-label=
"Name"
v-model=
"addMsg.LearningGoals"
:options=
"GLList"
emit-value
map-options
label=
"学习目的"
/>
<q-select
class=
"col-6 q-pb-lg"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
v-model=
"addMsg.GuestSource"
:options=
"OFList"
emit-value
map-options
label=
"客人来源"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.ContactAddress"
label=
"现居住地址"
/>
<div
class=
"col-6 q-pr-lg q-pb-lg"
>
<q-uploader
style=
"min-height:268px;max-width: 300px; background-repeat:no-repeat;background-position: 50% 50%;background-size: cover;"
:style=
"{'background-image':'url(' + addMsg.StuIcon + ')'}"
max-files=
"1"
hide-upload-btn
@
rejected=
"onRejected"
label=
"学生头像"
:max-file-size=
"5*1024*1024"
accept=
".jpg, image/*"
auto-upload
:factory=
"uploadFile"
no-thumbnails
>
:style=
"{ 'background-image': 'url(' + addMsg.StuIcon + ')' }"
max-files=
"1"
hide-upload-btn
@
rejected=
"onRejected"
label=
"学生头像"
:max-file-size=
"5 * 1024 * 1024"
accept=
".jpg, image/*"
auto-upload
:factory=
"uploadFile"
no-thumbnails
>
</q-uploader>
</div>
</div>
</q-card-section>
<q-card-section
class=
"q-pt-none"
v-if=
"msg.SourceId
>
0"
>
<q-card-section
class=
"q-pt-none"
v-if=
"msg.SourceId
>
0"
>
<div
class=
"row wrap"
>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.GuestName"
ref=
"GuestName"
label=
"姓名"
:rules=
"[val => !!val || '姓名']"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.GuestName"
ref=
"GuestName"
label=
"姓名"
:rules=
"[val => !!val || '姓名']"
/>
<div
class=
"col-6 q-pb-lg"
>
<q-radio
v-model=
"addMsg.Sex"
val=
"1"
label=
"男"
/>
<q-radio
v-model=
"addMsg.Sex"
val=
"2"
label=
"女"
/>
</div>
<q-input
filled
v-model=
"addMsg.BirthDate"
:rules=
"[val => !!val || '请选择出生日期']"
class=
"col-6 q-pb-lg q-pr-lg"
ref=
"BirthDate"
mask=
"date"
label=
"出生日期"
>
<q-input
filled
v-model=
"addMsg.BirthDate"
:rules=
"[val => !!val || '请选择出生日期']"
class=
"col-6 q-pb-lg q-pr-lg"
ref=
"BirthDate"
mask=
"date"
label=
"出生日期"
>
<
template
v-slot:append
>
<q-icon
name=
"event"
class=
"cursor-pointer"
>
<q-popup-proxy
ref=
"qDateProxy3"
transition-show=
"scale"
transition-hide=
"scale"
>
<q-date
v-model=
"addMsg.BirthDate"
@
input=
"() => $refs.qDateProxy3.hide()"
/>
<q-popup-proxy
ref=
"qDateProxy3"
transition-show=
"scale"
transition-hide=
"scale"
>
<q-date
v-model=
"addMsg.BirthDate"
@
input=
"() => $refs.qDateProxy3.hide()"
/>
</q-popup-proxy>
</q-icon>
</
template
>
</q-input>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
maxlength=
"20"
v-model=
"addMsg.Mobile"
ref=
"Mobile"
label=
"电话"
:rules=
"[val => !!val || '电话']"
/>
<q-select
class=
"col-6 q-pb-lg q-pr-lg"
option-value=
"Name"
filled
:rules=
"[val => !!val || '请选择日语水平']"
ref=
"Basics"
standout=
"bg-primary text-white"
option-label=
"Name"
v-model=
"addMsg.Basics"
:options=
"GBList"
emit-value
map-options
label=
"日语水平"
use-input
new-value-mode=
"add-unique"
hint=
"自己输入日语水平的话,输入之后按回车!"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
v-model=
"addMsg.GraduatedSchool"
label=
"毕业院校"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.GraduatedMajor"
label=
"毕业专业"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
v-model=
"addMsg.VolunteerMajor"
label=
"志愿专业"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.Price"
label=
"价格"
@
keyup
.
native=
"checkPrice(addMsg,'Price')"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
maxlength=
"20"
v-model=
"addMsg.Mobile"
ref=
"Mobile"
label=
"电话"
:rules=
"[val => !!val || '电话']"
/>
<q-select
class=
"col-6 q-pb-lg q-pr-lg"
option-value=
"Name"
filled
:rules=
"[val => !!val || '请选择日语水平']"
ref=
"Basics"
standout=
"bg-primary text-white"
option-label=
"Name"
v-model=
"addMsg.Basics"
:options=
"GBList"
emit-value
map-options
label=
"日语水平"
use-input
new-value-mode=
"add-unique"
hint=
"自己输入日语水平的话,输入之后按回车!"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
v-model=
"addMsg.GraduatedSchool"
label=
"毕业院校"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.GraduatedMajor"
label=
"毕业专业"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
v-model=
"addMsg.VolunteerMajor"
label=
"志愿专业"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.Price"
label=
"价格"
@
keyup
.
native=
"checkPrice(addMsg, 'Price')"
/>
<div
class=
"col-6 q-pr-lg q-pb-lg"
>
<q-uploader
style=
"display: inline-block;height: 150px;max-width: 100%; background-repeat:no-repeat"
:style=
"{'background-image':'url(' + addMsg.StuIcon + ')'}"
max-files=
"1"
hide-upload-btn
@
rejected=
"onRejected"
label=
"学生头像"
:max-file-size=
"5*1024*1024"
accept=
".jpg, image/*"
auto-upload
:factory=
"uploadFile"
no-thumbnails
>
<q-uploader
style=
"display: inline-block;height: 150px;max-width: 100%; background-repeat:no-repeat"
:style=
"{ 'background-image': 'url(' + addMsg.StuIcon + ')' }"
max-files=
"1"
hide-upload-btn
@
rejected=
"onRejected"
label=
"学生头像"
:max-file-size=
"5 * 1024 * 1024"
accept=
".jpg, image/*"
auto-upload
:factory=
"uploadFile"
no-thumbnails
>
</q-uploader>
</div>
</div>
</q-card-section>
<div
class=
"text-caption q-mb-lg q-px-md text-grey-6"
v-if=
"msg.ClassId>0"
>
附加信息
</div>
<div
class=
"row wrap"
style=
"margin:0 20px;"
v-if=
"msg.ClassId>0"
>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.IDCard"
label=
"身份证"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
v-model=
"addMsg.Domicile"
label=
"身份证居住地"
/>
<div
class=
"text-caption q-mb-lg q-px-md text-grey-6"
v-if=
"msg.ClassId > 0"
>
附加信息
</div>
<div
class=
"row wrap"
style=
"margin:0 20px;"
v-if=
"msg.ClassId > 0"
>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.IDCard"
label=
"身份证"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
v-model=
"addMsg.Domicile"
label=
"身份证居住地"
/>
</div>
<div
class=
"row wrap"
style=
"margin:0 20px;"
v-if=
"msg.ClassId > 0"
>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.Contact"
label=
"重要联系人"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
v-model=
"addMsg.ContactMobile"
label=
"重要联系电话"
/>
</div>
<div
class=
"row wrap"
style=
"margin:0 20px;"
v-if=
"msg.ClassId>0"
>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.Contact"
label=
"重要联系人"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg"
v-model=
"addMsg.ContactMobile"
label=
"重要联系电话"
/>
<div
class=
"text-caption q-mb-lg q-px-md text-grey-6"
v-if=
"msg.SourceId > 0"
>
备注信息
</div>
<div
class=
"text-caption q-mb-lg q-px-md text-grey-6"
v-if=
"msg.SourceId>0"
>
备注信息
</div>
<div
class=
"row wrap"
style=
"margin:0 20px;"
v-if=
"msg.SourceId>0"
>
<q-input
filled
stack-label
:dense=
"false"
v-model=
"addMsg.StudyRemark"
type=
"textarea"
class=
"col-12"
label=
"备注"
maxlength=
"300"
/>
<div
class=
"row wrap"
style=
"margin:0 20px;"
v-if=
"msg.SourceId > 0"
>
<q-input
filled
stack-label
:dense=
"false"
v-model=
"addMsg.StudyRemark"
type=
"textarea"
class=
"col-12"
label=
"备注"
maxlength=
"300"
/>
</div>
<div
class=
"row wrap"
style=
"margin:0 20px;"
>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.GuestContractNo"
label=
"合同编号"
/>
<q-select
class=
"col-6 q-pb-lg"
ref=
"ContractType"
@
input=
"resetContractArr"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
v-model=
"addMsg.ContractType"
:options=
"ContractTypeList"
emit-value
map-options
label=
"上传类型"
use-input
new-value-mode=
"add-unique"
/>
<q-input
clearable
filled
class=
"col-6 q-pb-lg q-pr-lg"
v-model=
"addMsg.GuestContractNo"
label=
"合同编号"
/>
<q-select
class=
"col-6 q-pb-lg"
ref=
"ContractType"
@
input=
"resetContractArr"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
v-model=
"addMsg.ContractType"
:options=
"ContractTypeList"
emit-value
map-options
label=
"上传类型"
use-input
new-value-mode=
"add-unique"
/>
</div>
<div
class=
"row wrap"
style=
"margin:0 20px;"
>
<div
class=
"col-12 text-grey-6"
>
上传附件:
<span
class=
"fj-tip"
style=
"font-size: 10px; color: #f00"
></span>
上传附件:
<span
class=
"fj-tip"
style=
"font-size: 10px; color: #f00"
></span>
</div>
</div>
<div>
<div
class=
"_addUpload_stu"
style=
"margin:15px 0 0 20px;min-height:100px;"
>
<div
class=
"_addUpload_stu"
style=
"margin:15px 0 0 20px;min-height:100px;"
>
<
template
v-for=
"(file, fIndex) in addMsg.ContractUrl"
>
<div
v-if=
"addMsg.ContractType == 2"
>
<div
style=
"width: 100%; height: 100%; overflow: hidden"
>
<el-image
style=
"width: 100%; height: 100%"
:src=
"file"
:preview-src-list=
"addMsg.ContractUrl"
>
<el-image
style=
"width: 100%; height: 100%"
:src=
"file"
:preview-src-list=
"addMsg.ContractUrl"
>
</el-image>
</div>
<span
class=
"iconfont icon-guanbi1"
@
click=
"deleteUploadFile(fIndex)"
></span>
<span
class=
"iconfont icon-guanbi1"
@
click=
"deleteUploadFile(fIndex)"
></span>
</div>
<div
v-if=
"addMsg.ContractType == 1"
style=
"float:left;"
>
<div
class=
"iconfont icon-pdf"
style=
"font-size:38px;color:green;text-align:center;line-height:75px;"
@
click=
"showUpLoadFile(file)"
></div>
<span
class=
"iconfont icon-guanbi1"
@
click=
"deleteUploadFile(fIndex)"
></span>
<div
class=
"iconfont icon-pdf"
style=
"font-size:38px;color:green;text-align:center;line-height:75px;"
@
click=
"showUpLoadFile(file)"
></div>
<span
class=
"iconfont icon-guanbi1"
@
click=
"deleteUploadFile(fIndex)"
></span>
</div>
</
template
>
<div
class=
"_pic_upload"
>
<el-upload
drag
:http-request=
"uploadFileBtn"
:multiple=
"true"
:show-file-list=
"false"
action=
""
>
<el-upload
drag
:http-request=
"uploadFileBtn"
:multiple=
"true"
:show-file-list=
"false"
action=
""
>
<i
class=
"el-icon-plus avatar-uploader-icon"
></i>
<div
class=
"el-upload__text"
>
{{ $t("active.ld_djscwj") }}
...
...
@@ -292,17 +674,34 @@
</div>
<q-separator
/>
<q-card-actions
align=
"right"
class=
"bg-white"
>
<q-btn
label=
"取消"
flat
color=
"grey-10"
style=
"font-weight:400 !important"
@
click=
"closeSaveForm"
/>
<q-btn
label=
"保存"
color=
"accent q-px-md"
style=
"font-weight:400 !important"
:loading=
"saveLoading"
@
click=
"save_t()"
/>
<q-btn
label=
"取消"
flat
color=
"grey-10"
style=
"font-weight:400 !important"
@
click=
"closeSaveForm"
/>
<q-btn
label=
"保存"
color=
"accent q-px-md"
style=
"font-weight:400 !important"
:loading=
"saveLoading"
@
click=
"save_t()"
/>
</q-card-actions>
</q-card>
</q-dialog>
<betchTransfer
v-if=
"showBetchTransfer"
@
close=
"closeBetchTransfer"
:OrderId=
"msg.OrderId"
@
success=
"resetSearch"
></betchTransfer>
</div>
</template>
<
script
>
import
{
import
{
getOrderGuestPageList
,
getGuestBasicsEnumList
,
//日语基础枚举
getGuestEducationEnumList
,
//学历枚举
...
...
@@ -310,151 +709,154 @@
getOrderSourceEnumList
,
//来源枚举
setOrderGuestInfo
,
//保存
delOrderGuestInfo
,
//删除
GetSelectClassOrderList
,
}
from
'../../api/sale/sale'
import
{
UploadSelfFile
,
}
from
'../../api/common/common'
GetSelectClassOrderList
}
from
"../../api/sale/sale"
;
export
default
{
import
{
UploadSelfFile
}
from
"../../api/common/common"
;
import
betchTransfer
from
"../../components/school/student/batchTransfer-order"
;
export
default
{
components
:
{
betchTransfer
},
data
()
{
return
{
currentUrl
:
""
,
columns
:
[{
name
:
'GuestName'
,
label
:
'姓名'
,
columns
:
[
{
name
:
"GuestName"
,
label
:
"姓名"
,
required
:
true
,
field
:
'GuestName'
,
align
:
'left'
field
:
"GuestName"
,
align
:
"left"
},
{
name
:
'Profession'
,
field
:
'Profession'
,
label
:
'职业'
,
align
:
'left'
,
name
:
"Profession"
,
field
:
"Profession"
,
label
:
"职业"
,
align
:
"left"
},
{
name
:
'Sex'
,
label
:
'性别'
,
align
:
'left'
name
:
"Sex"
,
label
:
"性别"
,
align
:
"left"
},
{
name
:
'BirthDate'
,
label
:
'出生日期'
,
field
:
'BirthDate'
,
align
:
'left'
name
:
"BirthDate"
,
label
:
"出生日期"
,
field
:
"BirthDate"
,
align
:
"left"
},
{
name
:
'CourseName'
,
label
:
'课程名称'
,
field
:
'CourseName'
,
align
:
'left'
name
:
"CourseName"
,
label
:
"课程名称"
,
field
:
"CourseName"
,
align
:
"left"
},
{
name
:
'GuestStateStr'
,
label
:
'学员状态'
,
field
:
'GuestStateStr'
,
align
:
'left'
name
:
"GuestStateStr"
,
label
:
"学员状态"
,
field
:
"GuestStateStr"
,
align
:
"left"
},
{
name
:
'TotalHours'
,
label
:
'总课时'
,
field
:
'TotalHours'
,
align
:
'left'
name
:
"TotalHours"
,
label
:
"总课时"
,
field
:
"TotalHours"
,
align
:
"left"
},
{
name
:
'ValidClassHours'
,
label
:
'有效课时'
,
field
:
'ValidClassHours'
,
align
:
'left'
name
:
"ValidClassHours"
,
label
:
"有效课时"
,
field
:
"ValidClassHours"
,
align
:
"left"
},
{
name
:
'CompleteHours'
,
label
:
'已上课时'
,
field
:
'CompleteHours'
,
align
:
'left'
name
:
"CompleteHours"
,
label
:
"已上课时"
,
field
:
"CompleteHours"
,
align
:
"left"
},
{
name
:
'SurplusHours'
,
label
:
'剩余课时'
,
field
:
'SurplusHours'
,
align
:
'left'
name
:
"SurplusHours"
,
label
:
"剩余课时"
,
field
:
"SurplusHours"
,
align
:
"left"
},
{
name
:
'MakeUpHours'
,
label
:
'可补课时'
,
field
:
'MakeUpHours'
,
align
:
'left'
name
:
"MakeUpHours"
,
label
:
"可补课时"
,
field
:
"MakeUpHours"
,
align
:
"left"
},
{
name
:
'BackClassList'
,
label
:
'业务单据'
,
field
:
'BackClassList'
,
align
:
'left'
name
:
"BackClassList"
,
label
:
"业务单据"
,
field
:
"BackClassList"
,
align
:
"left"
},
{
name
:
'Mobile'
,
label
:
'电话'
,
field
:
'Mobile'
,
align
:
'left'
name
:
"Mobile"
,
label
:
"电话"
,
field
:
"Mobile"
,
align
:
"left"
},
{
name
:
'Basics'
,
label
:
'日语基础'
,
field
:
'Basics'
,
align
:
'left'
name
:
"Basics"
,
label
:
"日语基础"
,
field
:
"Basics"
,
align
:
"left"
},
{
name
:
'GuestSourceName'
,
label
:
'客户来源'
,
field
:
'GuestSourceName'
,
align
:
'left'
name
:
"GuestSourceName"
,
label
:
"客户来源"
,
field
:
"GuestSourceName"
,
align
:
"left"
},
{
name
:
'LearningGoalsName'
,
label
:
'学日语目的'
,
field
:
'LearningGoalsName'
,
align
:
'left'
name
:
"LearningGoalsName"
,
label
:
"学日语目的"
,
field
:
"LearningGoalsName"
,
align
:
"left"
},
{
name
:
'Contact'
,
label
:
'重要联系人'
,
field
:
'Contact'
,
align
:
'left'
name
:
"Contact"
,
label
:
"重要联系人"
,
field
:
"Contact"
,
align
:
"left"
},
{
name
:
'ContactMobile'
,
label
:
'重要联系电话'
,
field
:
'ContactMobile'
,
align
:
'left'
name
:
"ContactMobile"
,
label
:
"重要联系电话"
,
field
:
"ContactMobile"
,
align
:
"left"
},
{
name
:
'GraduatedSchool'
,
label
:
'毕业院校'
,
field
:
'GraduatedSchool'
,
align
:
'left'
name
:
"GraduatedSchool"
,
label
:
"毕业院校"
,
field
:
"GraduatedSchool"
,
align
:
"left"
},
{
name
:
'GraduatedMajor'
,
label
:
'毕业专业'
,
field
:
'GraduatedMajor'
,
align
:
'left'
name
:
"GraduatedMajor"
,
label
:
"毕业专业"
,
field
:
"GraduatedMajor"
,
align
:
"left"
},
{
name
:
'VolunteerMajor'
,
label
:
'志愿专业'
,
field
:
'VolunteerMajor'
,
align
:
'left'
name
:
"VolunteerMajor"
,
label
:
"志愿专业"
,
field
:
"VolunteerMajor"
,
align
:
"left"
},
{
name
:
'Price'
,
label
:
'价格'
,
field
:
'Price'
,
align
:
'left'
name
:
"Price"
,
label
:
"价格"
,
field
:
"Price"
,
align
:
"left"
},
{
name
:
'optioned'
,
label
:
'操作'
,
name
:
"optioned"
,
label
:
"操作"
}
],
data
:
[],
...
...
@@ -466,8 +868,8 @@
OrderId
:
0
,
//订单编号
ClassId
:
0
,
//班级编号
SourceId
:
0
,
//留学就业编号
GuestName
:
''
,
GuestState
:
0
,
GuestName
:
""
,
GuestState
:
0
},
pageCount
:
0
,
persistent
:
false
,
...
...
@@ -475,20 +877,20 @@
addMsg
:
{
Id
:
0
,
OrderId
:
0
,
GuestName
:
''
,
Profession
:
''
,
Sex
:
'1'
,
GuestName
:
""
,
Profession
:
""
,
Sex
:
"1"
,
Age
:
0
,
Mobile
:
''
,
Basics
:
''
,
Education
:
''
,
//学历
GuestSource
:
''
,
//来源
Mobile
:
""
,
Basics
:
""
,
Education
:
""
,
//学历
GuestSource
:
""
,
//来源
LearningGoals
:
""
,
// 学习目的
Contact
:
''
,
//紧急联系人
ContactMobile
:
''
,
//紧急联系电话
IDCard
:
''
,
//身份证
Domicile
:
''
,
//身份证居住地
ContactAddress
:
''
,
//联系地址
Contact
:
""
,
//紧急联系人
ContactMobile
:
""
,
//紧急联系电话
IDCard
:
""
,
//身份证
Domicile
:
""
,
//身份证居住地
ContactAddress
:
""
,
//联系地址
SourceId
:
0
,
//留学就业编号
GraduatedSchool
:
""
,
//毕业院校
GraduatedMajor
:
""
,
//毕业专业
...
...
@@ -497,8 +899,8 @@
StudyRemark
:
""
,
//留学就业备注
BirthDate
:
""
,
//出生日期
TotalHours
:
0
,
//总课时
StuIcon
:
''
,
//头像
GuestContractNo
:
''
,
//合同编号
StuIcon
:
""
,
//头像
GuestContractNo
:
""
,
//合同编号
ContractType
:
1
,
//上传类型 1-PDF 2图片
ContractUrl
:
[]
//合同链接
},
...
...
@@ -509,18 +911,20 @@
isShowBtn
:
true
,
//默认显示新增名单
CourseClassHourse
:
0
,
//课时
//表格可见列
visibleColumns
:
[
],
//可见列
visibleColumns
:
[],
//可见列
initialIndex
:
0
,
ContractTypeList
:
[{
Name
:
'PDF'
,
ContractTypeList
:
[
{
Name
:
"PDF"
,
Id
:
1
},
{
Name
:
'图片'
,
},
{
Name
:
"图片"
,
Id
:
2
}]
}
],
showBetchTransfer
:
false
};
},
created
()
{
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
OrderId
)
{
...
...
@@ -540,22 +944,47 @@
this
.
isShowBtn
=
false
;
}
if
(
this
.
msg
.
ClassId
>
0
)
{
this
.
visibleColumns
=
[
'GuestName'
,
'Profession'
,
'Sex'
,
'BirthDate'
,
'Mobile'
,
'Basics'
,
'GuestSourceName'
,
'LearningGoalsName'
,
'Contact'
,
'ContactMobile'
,
'TotalHours'
,
'ValidClassHours'
,
'CompleteHours'
,
'MakeUpHours'
,
'SurplusHours'
,
'StartClassHours'
,
'CourseName'
,
'IsChaBan'
,
'BackClassList'
,
'GuestStateStr'
this
.
visibleColumns
=
[
"GuestName"
,
"Profession"
,
"Sex"
,
"BirthDate"
,
"Mobile"
,
"Basics"
,
"GuestSourceName"
,
"LearningGoalsName"
,
"Contact"
,
"ContactMobile"
,
"TotalHours"
,
"ValidClassHours"
,
"CompleteHours"
,
"MakeUpHours"
,
"SurplusHours"
,
"StartClassHours"
,
"CourseName"
,
"IsChaBan"
,
"BackClassList"
,
"GuestStateStr"
];
}
if
(
this
.
msg
.
SourceId
>
0
)
{
this
.
visibleColumns
=
[
'GuestName'
,
'Sex'
,
'BirthDate'
,
'Mobile'
,
'Basics'
,
'GraduatedSchool'
,
'GraduatedMajor'
,
'VolunteerMajor'
,
'Price'
this
.
visibleColumns
=
[
"GuestName"
,
"Sex"
,
"BirthDate"
,
"Mobile"
,
"Basics"
,
"GraduatedSchool"
,
"GraduatedMajor"
,
"VolunteerMajor"
,
"Price"
];
}
this
.
visibleColumns
.
push
(
'optioned'
);
this
.
visibleColumns
.
push
(
"optioned"
);
this
.
getOrderInfo
();
this
.
getGuestBasics
()
this
.
getGuestEducation
()
this
.
getGuestLearning
()
this
.
getGuestBasics
();
this
.
getGuestEducation
();
this
.
getGuestLearning
();
this
.
getGuestSource
();
},
mounted
()
{
...
...
@@ -566,7 +995,7 @@
goEduReceiptInfo
(
Id
)
{
this
.
OpenNewUrl
(
"/user/billquery"
,
{
Id
:
Id
})
});
},
resetContractArr
()
{
this
.
addMsg
.
ContractUrl
=
[];
...
...
@@ -586,20 +1015,21 @@
},
uploadFileBtn
(
file
)
{
// 1 文档 2 数据 3 图片,4压缩包,5视频
let
typeArr
=
[{
let
typeArr
=
[
{
stringArr
:
"GIF|JPG|JPEG|PNG|BMP|WEBP"
,
type
:
2
,
type
:
2
},
{
stringArr
:
"PDF|pdf"
,
type
:
1
,
},
type
:
1
}
];
let
ft
=
file
.
file
.
name
.
substring
(
file
.
file
.
name
.
lastIndexOf
(
"."
)
+
1
,
file
.
file
.
name
.
length
)
.
toUpperCase
();
let
fileTypeNumber
=
2
;
typeArr
.
forEach
((
x
)
=>
{
typeArr
.
forEach
(
x
=>
{
if
(
x
.
stringArr
.
indexOf
(
ft
)
!=
"-1"
)
{
fileTypeNumber
=
x
.
type
;
}
...
...
@@ -607,38 +1037,38 @@
if
(
this
.
addMsg
.
ContractType
==
1
)
{
if
(
fileTypeNumber
!=
1
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
type
:
"negative"
,
position
:
"top"
,
message
:
`请上传pdf文件`
})
return
});
return
;
}
}
if
(
this
.
addMsg
.
ContractType
==
2
)
{
if
(
fileTypeNumber
!=
2
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
type
:
"negative"
,
position
:
"top"
,
message
:
`请上传图片`
})
return
});
return
;
}
}
this
.
$message
.
info
(
this
.
$t
(
"tips.shangchuanzhong"
));
UploadSelfFile
(
"Temporary"
,
file
.
file
,
(
x
)
=>
{
x
=>
{
if
(
x
.
Code
==
1
)
{
if
(
this
.
addMsg
.
ContractType
==
1
)
{
if
(
this
.
addMsg
.
ContractUrl
.
length
<
1
)
{
this
.
addMsg
.
ContractUrl
.
push
(
x
.
FileUrl
);
}
else
{
this
.
$q
.
notify
({
type
:
'negative'
,
type
:
"negative"
,
position
:
"top"
,
message
:
`只能上传一个PDF文件`
})
});
}
}
else
{
this
.
addMsg
.
ContractUrl
.
push
(
x
.
FileUrl
);
...
...
@@ -653,21 +1083,22 @@
var
qMsg
=
{
ClassId
:
this
.
msg
.
ClassId
,
OrderId
:
this
.
msg
.
OrderId
}
};
GetSelectClassOrderList
(
qMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
var
tempData
=
res
.
Data
;
if
(
tempData
&&
tempData
.
length
==
1
)
{
this
.
CourseClassHourse
=
tempData
[
0
].
ClassHours
-
tempData
[
0
].
StartClassHours
this
.
CourseClassHourse
=
tempData
[
0
].
ClassHours
-
tempData
[
0
].
StartClassHours
;
}
}
})
});
},
//日语基础枚举
getGuestBasics
()
{
getGuestBasicsEnumList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
GBList
=
res
.
Data
this
.
GBList
=
res
.
Data
;
}
});
},
...
...
@@ -684,18 +1115,20 @@
getGuestLearningGoalsEnumList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
GLList
=
res
.
Data
;
this
.
addMsg
.
LearningGoals
=
this
.
GLList
[
0
].
Id
this
.
addMsg
.
LearningGoals
=
this
.
GLList
[
0
].
Id
;
}
});
},
//获取客人来源枚举
getGuestSource
()
{
getOrderSourceEnumList
({}).
then
(
res
=>
{
getOrderSourceEnumList
({})
.
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
OFList
=
res
.
Data
this
.
addMsg
.
GuestSource
=
this
.
OFList
[
0
].
Id
this
.
OFList
=
res
.
Data
;
this
.
addMsg
.
GuestSource
=
this
.
OFList
[
0
].
Id
;
}
}).
catch
(()
=>
{})
})
.
catch
(()
=>
{});
},
//重新查询
resetSearch
()
{
...
...
@@ -705,26 +1138,28 @@
//翻页
changePage
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getGuestPage
()
this
.
getGuestPage
();
},
//获取学员名单
getGuestPage
()
{
this
.
loading
=
true
;
getOrderGuestPageList
(
this
.
msg
).
then
(
res
=>
{
this
.
loading
=
false
this
.
data
=
res
.
Data
.
PageData
this
.
pageCount
=
res
.
Data
.
PageCount
}).
catch
(()
=>
{
this
.
loading
=
false
getOrderGuestPageList
(
this
.
msg
)
.
then
(
res
=>
{
this
.
loading
=
false
;
this
.
data
=
res
.
Data
.
PageData
;
this
.
pageCount
=
res
.
Data
.
PageCount
;
})
.
catch
(()
=>
{
this
.
loading
=
false
;
});
},
//返回
goreturn
()
{
this
.
$router
.
go
(
-
1
)
this
.
$router
.
go
(
-
1
);
},
//关闭弹窗
closeSaveForm
()
{
this
.
persistent
=
false
this
.
persistent
=
false
;
},
//新增修改学员信息
save_t
()
{
...
...
@@ -732,37 +1167,42 @@
this
.
$refs
.
Basics
.
validate
();
this
.
$refs
.
BirthDate
.
validate
();
this
.
$refs
.
Mobile
.
validate
();
if
(
!
this
.
$refs
.
GuestName
.
hasError
&&
!
this
.
$refs
.
Basics
.
hasError
&&
!
this
.
$refs
.
BirthDate
.
hasError
&&
!
this
.
$refs
.
Mobile
.
hasError
if
(
!
this
.
$refs
.
GuestName
.
hasError
&&
!
this
.
$refs
.
Basics
.
hasError
&&
!
this
.
$refs
.
BirthDate
.
hasError
&&
!
this
.
$refs
.
Mobile
.
hasError
)
{
if
(
this
.
msg
.
ClassId
>
0
)
{
if
(
this
.
addMsg
.
Education
==
''
)
{
if
(
this
.
addMsg
.
Education
==
""
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
type
:
"negative"
,
position
:
"top"
,
message
:
`请选择学历`
})
});
return
;
}
}
this
.
saveLoading
=
true
setOrderGuestInfo
(
this
.
addMsg
).
then
(
res
=>
{
this
.
saveLoading
=
true
;
setOrderGuestInfo
(
this
.
addMsg
)
.
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
icon
:
"iconfont icon-chenggong"
,
color
:
"accent"
,
timeout
:
2000
,
message
:
'保存成功!'
,
position
:
'top'
})
message
:
"保存成功!"
,
position
:
"top"
})
;
this
.
saveLoading
=
false
;
this
.
persistent
=
false
;
this
.
resetSearch
()
this
.
initialize
()
this
.
resetSearch
()
;
this
.
initialize
()
;
}
}).
catch
(()
=>
{
this
.
saveLoading
=
false
})
.
catch
(()
=>
{
this
.
saveLoading
=
false
;
});
}
},
//初始化数据
...
...
@@ -770,28 +1210,28 @@
this
.
addMsg
=
{
Id
:
0
,
OrderId
:
this
.
$route
.
query
.
OrderId
,
GuestName
:
''
,
Profession
:
''
,
Sex
:
'1'
,
GuestName
:
""
,
Profession
:
""
,
Sex
:
"1"
,
Age
:
0
,
Mobile
:
''
,
Basics
:
''
,
Education
:
''
,
//学历
Mobile
:
""
,
Basics
:
""
,
Education
:
""
,
//学历
GuestSource
:
this
.
OFList
[
0
].
Id
,
//来源
LearningGoals
:
this
.
GLList
[
0
].
Id
,
// 学习目的
Contact
:
''
,
//紧急联系人
ContactMobile
:
''
,
//紧急联系电话
IDCard
:
''
,
//身份证
Domicile
:
''
,
//身份证居住地
ContactAddress
:
''
,
//联系地址
Contact
:
""
,
//紧急联系人
ContactMobile
:
""
,
//紧急联系电话
IDCard
:
""
,
//身份证
Domicile
:
""
,
//身份证居住地
ContactAddress
:
""
,
//联系地址
SourceId
:
this
.
$route
.
query
.
SourceId
,
GraduatedSchool
:
""
,
//毕业院校
GraduatedMajor
:
""
,
//毕业专业
VolunteerMajor
:
""
,
//志愿专业
Price
:
0
,
//价格
StudyRemark
:
""
,
//留学就业备注
TotalHours
:
this
.
CourseClassHourse
,
}
TotalHours
:
this
.
CourseClassHourse
};
},
//新增学员弹窗
addxue
()
{
...
...
@@ -800,17 +1240,17 @@
},
//修改学员信息
EditRole
(
item
)
{
this
.
addMsg
.
Id
=
item
.
Id
this
.
addMsg
.
GuestName
=
item
.
GuestName
this
.
addMsg
.
Profession
=
item
.
Profession
this
.
addMsg
.
Sex
=
item
.
Sex
.
toString
()
this
.
addMsg
.
Age
=
item
.
Age
this
.
addMsg
.
Mobile
=
item
.
Mobile
this
.
addMsg
.
Basics
=
item
.
Basics
this
.
addMsg
.
Education
=
item
.
Education
this
.
addMsg
.
GuestSource
=
item
.
GuestSource
this
.
addMsg
.
LearningGoals
=
item
.
LearningGoals
this
.
addMsg
.
Contact
=
item
.
Contact
this
.
addMsg
.
Id
=
item
.
Id
;
this
.
addMsg
.
GuestName
=
item
.
GuestName
;
this
.
addMsg
.
Profession
=
item
.
Profession
;
this
.
addMsg
.
Sex
=
item
.
Sex
.
toString
();
this
.
addMsg
.
Age
=
item
.
Age
;
this
.
addMsg
.
Mobile
=
item
.
Mobile
;
this
.
addMsg
.
Basics
=
item
.
Basics
;
this
.
addMsg
.
Education
=
item
.
Education
;
this
.
addMsg
.
GuestSource
=
item
.
GuestSource
;
this
.
addMsg
.
LearningGoals
=
item
.
LearningGoals
;
this
.
addMsg
.
Contact
=
item
.
Contact
;
this
.
addMsg
.
ContactMobile
=
item
.
ContactMobile
;
this
.
addMsg
.
IDCard
=
item
.
IDCard
;
this
.
addMsg
.
Domicile
=
item
.
Domicile
;
...
...
@@ -833,50 +1273,54 @@
},
//删除学员
deleteUser
(
item
)
{
let
that
=
this
this
.
$q
.
dialog
({
title
:
'提示信息'
,
message
:
'是否删除此学员!'
,
let
that
=
this
;
this
.
$q
.
dialog
({
title
:
"提示信息"
,
message
:
"是否删除此学员!"
,
cancel
:
true
,
persistent
:
true
,
ok
:
"确定"
,
cancel
:
"取消"
,
}).
onOk
(()
=>
{
cancel
:
"取消"
})
.
onOk
(()
=>
{
delOrderGuestInfo
({
GuestId
:
item
.
Id
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
that
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
icon
:
"iconfont icon-chenggong"
,
color
:
"accent"
,
timeout
:
2000
,
message
:
'操作成功'
,
position
:
'top'
})
message
:
"操作成功"
,
position
:
"top"
})
;
that
.
getGuestPage
();
}
});
})
})
.
onCancel
(()
=>
{});
.
onCancel
(()
=>
{});
},
onRejected
(
rejectedEntries
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
type
:
"negative"
,
position
:
"top"
,
message
:
`文件验证失败,请重新上传`
})
});
},
uploadFile
(
files
)
{
UploadSelfFile
(
'studentIcon'
,
files
[
0
],
res
=>
{
UploadSelfFile
(
"studentIcon"
,
files
[
0
],
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
addMsg
.
StuIcon
=
res
.
FileUrl
;
}
})
});
},
closeBetchTransfer
()
{
this
.
showBetchTransfer
=
false
;
}
}
};
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
@import
url('~assets/css/table.sass')
</
style
>
src/router/routes.js
View file @
e7a2a2b9
...
...
@@ -875,7 +875,12 @@ const routes = [{
import
(
"pages/sale/visitorRegistrat.vue"
)
},
{
path
:
"/sale/b2bcustomer"
,
//销售 同行管理
path
:
"/sale/b2bcustomer"
,
//销售 我的同行
component
:
()
=>
import
(
"pages/sale/b2bcustomer.vue"
)
},
{
path
:
"/sale/b2bAllCustomer"
,
//销售 同行管理
component
:
()
=>
import
(
"pages/sale/b2bcustomer.vue"
)
},
...
...
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