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
a5f26e75
Commit
a5f26e75
authored
Sep 29, 2020
by
罗超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
处理完成教师的功能
parent
a2130725
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
264 additions
and
90 deletions
+264
-90
index.js
src/api/school/index.js
+23
-0
teacher-form.vue
src/components/school/teacher-form.vue
+187
-16
MainLayout.vue
src/layouts/MainLayout.vue
+3
-3
manager.vue
src/pages/school/manager.vue
+3
-1
teacher.vue
src/pages/school/teacher.vue
+40
-69
app.js
src/store/modules/app.js
+8
-1
No files found.
src/api/school/index.js
View file @
a5f26e75
...
...
@@ -12,6 +12,18 @@ export function getSchoolPage(data) {
})
}
/**
* 获取学校列表
*
*/
export
function
getSchoolDropdown
(
data
)
{
return
request
({
url
:
'/user/GetSchoolList'
,
method
:
'post'
,
data
})
}
/**
* 获取学校分页列表
*
...
...
@@ -34,3 +46,14 @@ export function getTeacherPage(data) {
data
})
}
/**
* 保存教师信息
*/
export
function
saveTeacher
(
data
)
{
return
request
({
url
:
'/user/SetTeacher'
,
method
:
'post'
,
data
})
}
\ No newline at end of file
src/components/school/teacher-form.vue
View file @
a5f26e75
...
...
@@ -2,32 +2,47 @@
<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;"
>
<q-card-section>
<div
class=
"text-h6"
>
{{
objOption
.
SId
==
0
?
'新增校区'
:
'修改校区
'
}}
</div>
<div
class=
"text-h6"
>
{{
objOption
.
TId
==
0
?
'新增教师信息'
:
'修改教师信息
'
}}
</div>
</q-card-section>
<q-card-section
class=
"q-pt-none scroll"
style=
"max-height: 70vh"
>
<div
class=
"text-caption q-mb-lg q-px-md text-grey-6"
>
基本资料
</div>
<q-card-section
class=
"q-pt-none"
>
<div
class=
"row wrap"
>
<q-input
filled
stack-label
maxlength=
"20"
:dense=
"false"
v-model=
"objOption.SName"
ref=
"SName"
class=
"col-6 q-pr-lg q-pb-lg"
label=
"校区名称"
:rules=
"[val => !!val || '请填写校区名称']"
/>
<q-input
filled
stack-label
maxlength=
"20"
:dense=
"false"
v-model=
"objOption.SAddress"
ref=
"SAddress"
class=
"col-6 q-pb-lg"
label=
"校区地址"
:rules=
"[val => !!val || '请填写校区地址']"
/>
<q-input
filled
stack-label
maxlength=
"20"
:dense=
"false"
v-model=
"objOption.SLinkMan"
ref=
"SLinkMan"
class=
"col-6 q-pr-lg q-pb-lg "
label=
"校区联系人"
:rules=
"[val => !!val || '请填写校区联系人']"
/>
<q-input
filled
stack-label
maxlength=
"20"
:dense=
"false"
v-model=
"objOption.SLinkTel"
ref=
"SLinkTel"
class=
"col-6 q-pb-lg"
label=
"校区联系电话"
:rules=
"[val => !!val || '请填写校区联系电话']"
/>
<q-input
filled
stack-label
maxlength=
"20"
:dense=
"false"
v-model=
"objOption.Remark"
class=
"col-6 q-pb-lg q-pr-lg"
label=
"校区备注"
/>
<q-input
filled
stack-label
maxlength=
"20"
:dense=
"false"
v-model=
"objOption.TeacherName"
ref=
"TeacherName"
class=
"col-6 q-pr-lg q-pb-lg"
label=
"教师名称"
:rules=
"[val => !!val || '请填写教师姓名']"
/>
<q-select
filled
stack-label
option-value=
"SId"
option-label=
"SName"
v-model=
"objOption.School_Id"
ref=
"School_Id"
:options=
"schoolList"
label=
"所属校区"
:dense=
"false"
class=
"col-6 q-pb-lg"
:rules=
"[val => !!val || '请选择所属校区']"
/>
<q-input
type=
"tel"
filled
stack-label
maxlength=
"100"
:dense=
"false"
v-model=
"objOption.TeacherTel"
ref=
"TeacherTel"
class=
"col-6 q-pr-lg q-pb-lg"
label=
"联系电话"
:rules=
"[val => !!val || '请填写教师联系电话']"
/>
<q-input
filled
stack-label
maxlength=
"100"
:dense=
"false"
v-model=
"objOption.TeacherSay"
ref=
"TeacherSay"
class=
"col-6 q-pb-lg"
label=
"教师营销语"
/>
<div
class=
"col-6 q-pr-lg q-pb-lg"
>
<q-uploader
@
uploaded=
"uploadSuccess"
hide-upload-btn
max-files=
"1"
@
rejected=
"onRejected"
label=
"教师头像"
:max-file-size=
"512*1024"
accept=
".jpg, image/*"
auto-upload
:url=
"action"
/>
</div>
<div
class=
"col-6 q-pb-lg"
>
<q-uploader
@
uploaded=
"uploadSuccess"
hide-upload-btn
max-files=
"1"
@
rejected=
"onRejected"
label=
"教师形象照"
:max-file-size=
"512*1024"
accept=
".jpg, image/*"
auto-upload
:url=
"actionIcon"
/>
</div>
<q-editor
:toolbar=
"toolbar"
:fonts=
"fonts"
v-model=
"objOption.TeacherIntro"
class=
"col-12"
:definitions=
"
{bold: {label: 'Bold', icon: null, tip: 'My bold tooltip'}}" />
<div
class=
"col-6 q-pr-lg q-pb-lg"
>
<q-toggle
size=
"md"
label=
"是否显示"
color=
"primary"
:false-value=
"0"
:true-value=
"1"
v-model=
"objOption.IsShow"
/>
<div
class=
"text-grey-6 text-caption"
>
注意:隐藏后,教师将在其他任何地方无法显示
</div>
</div>
<div
class=
"col-6"
>
<q-toggle
size=
"md"
label=
"
校区状态"
color=
"primary"
:false-value=
"1"
:true-value=
"0"
v-model=
"objOption.Status
"
/>
<div
class=
"text-grey-6 text-caption"
>
注意:
关闭校区后,所有下属教师、学生将无法继续使用系统
</div>
<q-toggle
size=
"md"
label=
"
是否推荐"
color=
"primary"
:false-value=
"1"
:true-value=
"0"
v-model=
"objOption.IsRecommend
"
/>
<div
class=
"text-grey-6 text-caption"
>
注意:
推荐后教师将在营销端呈现
</div>
</div>
</div>
</q-card-section>
<q-separator
/>
<q-card-actions
align=
"right"
class=
"bg-white"
>
<q-btn
label=
"取消"
color=
"dark"
style=
"font-weight:400 !important"
@
click=
"closeSaveForm"
/>
<q-btn
label=
"立即提交"
color=
"accent q-px-md"
style=
"font-weight:400 !important"
:loading=
"saveLoading"
@
click=
"save
School
"
/>
<q-btn
label=
"立即提交"
color=
"accent q-px-md"
style=
"font-weight:400 !important"
:loading=
"saveLoading"
@
click=
"save
Teacher
"
/>
</q-card-actions>
</q-card>
</q-dialog>
</
template
>
<
script
>
import
{
getSchoolDropdown
,
saveTeacher
}
from
'../../api/school/index'
export
default
{
props
:
{
saveObj
:
{
...
...
@@ -37,14 +52,99 @@ export default {
},
data
()
{
return
{
persistent
:
true
,
objOption
:
{},
optionTitle
:
""
optionTitle
:
""
,
schoolList
:
[],
saveLoading
:
false
,
imgDomain
:
"http://imgfile.oytour.com"
,
action
:
"http://upload.oytour.com/Upload?filePath="
+
encodeURIComponent
(
'/edu/teacher/'
),
actionIcon
:
"http://upload.oytour.com/Upload?filePath="
+
encodeURIComponent
(
'/edu/teacherIcon/'
),
toolbar
:
[],
fonts
:
{
arial
:
'Arial'
,
arial_black
:
'Arial Black'
,
comic_sans
:
'Comic Sans MS'
,
courier_new
:
'Courier New'
,
impact
:
'Impact'
,
lucida_grande
:
'Lucida Grande'
,
times_new_roman
:
'Times New Roman'
,
verdana
:
'Verdana'
}
}
},
mounted
()
{
if
()
this
.
getSchool
()
this
.
initObj
()
this
.
initToolBar
()
},
methods
:
{
initToolBar
()
{
this
.
toolbar
=
[
[{
label
:
'对齐'
,
icon
:
this
.
$q
.
iconSet
.
editor
.
align
,
fixedLabel
:
true
,
list
:
'only-icons'
,
options
:
[
'left'
,
'center'
,
'right'
,
'justify'
]
}],
[
'bold'
,
'italic'
,
'strike'
,
'underline'
,
'subscript'
,
'superscript'
],
[{
label
:
'格式'
,
icon
:
this
.
$q
.
iconSet
.
editor
.
formatting
,
list
:
'no-icons'
,
fixedLabel
:
true
,
fixedIcon
:
true
,
options
:
[
'p'
,
'h1'
,
'h2'
,
'h3'
,
'h4'
,
'h5'
,
'h6'
,
'code'
]
},
{
label
:
'字号'
,
icon
:
this
.
$q
.
iconSet
.
editor
.
fontSize
,
fixedLabel
:
true
,
fixedIcon
:
true
,
list
:
'no-icons'
,
options
:
[
'size-1'
,
'size-2'
,
'size-3'
,
'size-4'
,
'size-5'
,
'size-6'
,
'size-7'
]
},
{
label
:
'字体'
,
icon
:
this
.
$q
.
iconSet
.
editor
.
font
,
fixedLabel
:
true
,
fixedIcon
:
true
,
list
:
'no-icons'
,
options
:
[
'default_font'
,
'arial'
,
'arial_black'
,
'comic_sans'
,
'courier_new'
,
'impact'
,
'lucida_grande'
,
'times_new_roman'
,
'verdana'
]
},
'removeFormat'
],
[
'ordered'
,
'outdent'
,
'indent'
],
]
},
initObj
()
{
if
(
this
.
saveObj
)
{
this
.
optionTitle
=
"修改教师信息"
...
...
@@ -60,12 +160,83 @@ export default {
TeacherIcon
:
''
,
TeacherSay
:
''
,
TeacherIntro
:
''
,
IsShow
:
'1'
,
IsRecommend
:
'0'
,
IsShow
:
1
,
IsRecommend
:
0
,
SortNum
:
1
}
}
},
getSchool
()
{
getSchoolDropdown
({}).
then
(
res
=>
{
this
.
schoolList
=
res
.
Data
})
},
onRejected
(
rejectedEntries
)
{
this
.
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`文件验证失败,请重新上传`
})
},
uploadSuccess
(
info
)
{
if
(
info
.
xhr
.
status
==
'200'
)
{
let
res
=
JSON
.
parse
(
info
.
xhr
.
response
)
if
(
res
.
FilePath
.
indexOf
(
'teacherIcon'
)
==
-
1
)
{
this
.
objOption
.
TeacherHead
=
this
.
imgDomain
+
res
.
FilePath
}
else
{
this
.
objOption
.
TeacherIcon
=
this
.
imgDomain
+
res
.
FilePath
}
}
},
closeSaveForm
()
{
this
.
$emit
(
'close'
)
this
.
persistent
=
false
},
saveTeacher
()
{
this
.
saveLoading
=
true
this
.
$refs
.
School_Id
.
validate
()
this
.
$refs
.
TeacherName
.
validate
()
this
.
$refs
.
TeacherTel
.
validate
()
if
(
!
this
.
$refs
.
School_Id
.
hasError
&&
!
this
.
$refs
.
TeacherName
.
hasError
&&
!
this
.
$refs
.
TeacherTel
.
hasError
)
{
let
err_msg
=
""
if
(
this
.
objOption
.
TeacherIcon
==
''
)
{
err_msg
=
"请上传教师形象照"
}
else
if
(
this
.
objOption
.
TeacherHead
==
''
)
{
err_msg
=
"请上传用户头像"
}
if
(
err_msg
==
""
)
{
this
.
objOption
.
School_Id
=
this
.
objOption
.
School_Id
.
SId
saveTeacher
(
this
.
objOption
).
then
(
res
=>
{
this
.
saveLoading
=
false
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'数据保存成功!'
,
position
:
'top'
})
this
.
$emit
(
"success"
)
this
.
closeSaveForm
()
}).
catch
(()
=>
{
this
.
saveLoading
=
false
})
}
else
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
err_msg
})
this
.
saveLoading
=
false
}
}
else
{
this
.
saveLoading
=
false
}
},
},
}
</
script
>
...
...
src/layouts/MainLayout.vue
View file @
a5f26e75
...
...
@@ -238,8 +238,8 @@ export default {
},
mounted
()
{
let
i
=
0
if
(
lockr
.
get
(
"current_navs"
))
{
i
=
lockr
.
get
(
"current_navs"
)
if
(
sessionStorage
.
getItem
(
"current_navs"
))
{
i
=
sessionStorage
.
getItem
(
"current_navs"
)
}
this
.
tab
=
`navs_
${
i
}
`
if
(
this
.
userInfo
&&
this
.
userInfo
.
MenuList
)
{
...
...
@@ -261,7 +261,7 @@ export default {
},
setNavs
(
val
)
{
//防止页面数据丢失
lockr
.
set
(
"current_navs"
,
val
)
sessionStorage
.
setItem
(
"current_navs"
,
val
)
this
.
tab
=
`navs_
${
val
}
`
this
.
secondNavs
=
this
.
userInfo
.
MenuList
[
val
].
SubList
this
.
$router
.
push
({
...
...
src/pages/school/manager.vue
View file @
a5f26e75
...
...
@@ -230,7 +230,7 @@ export default {
},
changePage
(
val
)
{
this
.
msg
.
Status
=
this
.
StatusTemp
?
this
.
StatusTemp
.
value
:
'-1'
this
.
msg
.
pageIndex
=
1
this
.
msg
.
pageIndex
=
val
this
.
loading
=
true
this
.
getSchool
()
},
...
...
@@ -272,6 +272,8 @@ export default {
}
this
.
getSchool
()
this
.
closeSaveForm
()
}).
catch
(()
=>
{
this
.
saveLoading
=
false
})
}
else
{
this
.
saveLoading
=
false
...
...
src/pages/school/teacher.vue
View file @
a5f26e75
...
...
@@ -18,15 +18,15 @@
<div
class=
"page-option"
>
<!-- 原则上不能操作过三个按钮,建议不要使用查询按钮,增加用户操作次数 -->
<!--
<q-btn
color=
"primary"
outline
label=
"立即查询"
/>
-->
<q-btn
color=
"accent"
class=
"q-mr-md"
icon=
"add"
label=
"新增教师"
@
click=
"
init
Obj(null)"
/>
<q-btn
color=
"accent"
class=
"q-mr-md"
icon=
"add"
label=
"新增教师"
@
click=
"
add
Obj(null)"
/>
<q-btn-dropdown
outline
color=
"dark"
label=
"更多"
>
<q-list>
<q-item
clickable
v-close-popup
@
click=
"onItemClick"
>
<q-item
clickable
v-close-popup
>
<q-item-section>
<q-item-label>
批量导入
</q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-close-popup
@
click=
"onItemClick"
>
<q-item
clickable
v-close-popup
>
<q-item-section>
<q-item-label>
批量导出
</q-item-label>
</q-item-section>
...
...
@@ -71,11 +71,11 @@
</
template
>
<
template
v-slot:body-cell-optioned=
"props"
>
<q-td
:props=
"props"
>
<q-btn
flat
size=
"xs"
icon=
"edit"
color=
"accent"
style=
"font-family:perfectFont"
label=
"编辑"
@
click=
"
init
Obj(props.value)"
/>
<q-btn
flat
size=
"xs"
icon=
"edit"
color=
"accent"
style=
"font-family:perfectFont"
label=
"编辑"
@
click=
"
add
Obj(props.value)"
/>
</q-td>
</
template
>
</q-table>
<teacher-form
v-if=
"persistent"
:save-obj=
"objOption"
@
close=
"closeSaveForm"
@
success=
""
></teacher-form>
</div>
</div>
</template>
...
...
@@ -84,10 +84,14 @@
import
{
getTeacherPage
}
from
'../../api/school/index'
import
teacherForm
from
'../../components/school/teacher-form'
export
default
{
meta
:
{
title
:
"教师管理"
},
components
:
{
teacherForm
},
data
()
{
return
{
currentUrl
:
""
,
...
...
@@ -207,8 +211,7 @@ export default {
},
pageCount
:
0
,
persistent
:
false
,
objOption
:
{},
saveLoading
:
false
objOption
:
null
}
},
mounted
()
{
...
...
@@ -216,40 +219,10 @@ export default {
this
.
getTeacher
()
},
methods
:
{
onItemClick
()
{
},
initObj
(
id
)
{
if
(
id
)
{
let
obj
=
this
.
data
.
filter
(
x
=>
{
if
(
x
.
SId
==
id
)
{
return
x
}
return
false
})
console
.
log
(
obj
)
this
.
objOption
=
obj
[
0
]
}
else
{
this
.
objOption
=
{
SId
:
0
,
SName
:
""
,
SAddress
:
""
,
SLinkMan
:
""
,
SLinkTel
:
""
,
SDomain
:
""
,
SLogo
:
""
,
Remark
:
""
,
Status
:
'0'
}
}
console
.
log
(
this
.
objOption
)
this
.
persistent
=
true
},
resetSearch
()
{
this
.
pageIndex
=
1
//this.pageCount = 0
this
.
loading
=
true
this
.
msg
.
Status
=
this
.
StatusTemp
?
this
.
StatusTemp
.
value
:
'-1'
this
.
getTeacher
()
},
changePage
(
val
)
{
...
...
@@ -268,40 +241,38 @@ export default {
this
.
loading
=
false
})
},
addAfterQuery
()
{
if
(
!
this
.
objOption
)
{
this
.
msg
=
{
pageIndex
:
1
,
pageSize
:
12
,
rowsPerPage
:
12
,
TeacherName
:
""
,
TeacherTel
:
""
,
AuditStatus
:
"-1"
,
IsShow
:
"-1"
}
}
this
.
getTeacher
()
},
addObj
(
id
)
{
if
(
id
)
{
let
obj
=
this
.
data
.
filter
(
x
=>
{
if
(
x
.
TId
==
id
)
{
return
x
}
return
false
})
this
.
objOption
=
obj
[
0
]
}
else
{
this
.
objOption
=
null
}
this
.
persistent
=
true
},
closeSaveForm
()
{
this
.
persistent
=
false
},
// saveSchool() {
// this.saveLoading = true
// this.$refs.SName.validate()
// this.$refs.SAddress.validate()
// this.$refs.SLinkMan.validate()
// this.$refs.SLinkTel.validate()
// if (
// !this.$refs.SName.hasError &&
// !this.$refs.SAddress.hasError &&
// !this.$refs.SLinkMan.hasError &&
// !this.$refs.SLinkTel.hasError
// ) {
// saveSchool(this.objOption).then(res => {
// this.saveLoading = false
// this.$q.notify({
// icon: 'iconfont icon-chenggong',
// color: 'accent',
// timeout: 2000,
// message: '数据保存成功!',
// position: 'top'
// })
// if (this.objOption.SId == 0) {
// this.msg.pageIndex = 1
// }
// this.getSchool()
// this.closeSaveForm()
// })
// } else {
// this.saveLoading = false
// }
// }
}
},
}
</
script
>
...
...
src/store/modules/app.js
View file @
a5f26e75
...
...
@@ -4,7 +4,8 @@ import Lockr from 'lockr'
const
app
=
{
state
:
{
logo
:
''
,
name
:
''
name
:
''
,
currentNavs
:
0
},
mutations
:
{
...
...
@@ -13,6 +14,9 @@ const app = {
},
SET_APPNAME
:
(
state
,
name
)
=>
{
state
.
name
=
name
},
SET_CURRENTNAVS
:
(
state
,
nav
)
=>
{
state
.
currentNavs
=
nav
}
},
...
...
@@ -25,6 +29,9 @@ const app = {
commit
(
'SET_APPLOGO'
,
GroupLogo
)
Lockr
.
set
(
'systemLogo'
,
GroupName
)
Lockr
.
set
(
'systemName'
,
GroupLogo
)
},
SystemNavsChange
({
commit
},
nav
)
{
commit
(
'SET_CURRENTNAVS'
,
nav
)
}
}
}
...
...
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