Commit a5f26e75 authored by 罗超's avatar 罗超

处理完成教师的功能

parent a2130725
...@@ -12,6 +12,18 @@ export function getSchoolPage(data) { ...@@ -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) { ...@@ -34,3 +46,14 @@ export function getTeacherPage(data) {
data data
}) })
} }
/**
* 保存教师信息
*/
export function saveTeacher(data) {
return request({
url: '/user/SetTeacher',
method: 'post',
data
})
}
\ No newline at end of file
...@@ -2,32 +2,47 @@ ...@@ -2,32 +2,47 @@
<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;"> <q-card style="width: 800px;max-width:900px;">
<q-card-section> <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>
<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> <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"> <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.TeacherName" ref="TeacherName" 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-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 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 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="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="100" :dense="false" v-model="objOption.TeacherSay" ref="TeacherSay" class="col-6 q-pb-lg" label="教师营销语" />
<q-input filled stack-label maxlength="20" :dense="false" v-model="objOption.Remark" class="col-6 q-pb-lg q-pr-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"> <div class="col-6">
<q-toggle size="md" label="校区状态" color="primary" :false-value="1" :true-value="0" v-model="objOption.Status" /> <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 class="text-grey-6 text-caption">注意:推荐后教师将在营销端呈现</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>
<q-separator /> <q-separator />
<q-card-actions align="right" class="bg-white"> <q-card-actions align="right" class="bg-white">
<q-btn label="取消" color="dark" style="font-weight:400 !important" @click="closeSaveForm" /> <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="saveSchool" /> <q-btn label="立即提交" color="accent q-px-md" style="font-weight:400 !important" :loading="saveLoading" @click="saveTeacher" />
</q-card-actions> </q-card-actions>
</q-card> </q-card>
</q-dialog> </q-dialog>
</template> </template>
<script> <script>
import {
getSchoolDropdown,
saveTeacher
} from '../../api/school/index'
export default { export default {
props: { props: {
saveObj: { saveObj: {
...@@ -37,14 +52,99 @@ export default { ...@@ -37,14 +52,99 @@ export default {
}, },
data() { data() {
return { return {
persistent: true,
objOption: {}, 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() { mounted() {
if () this.getSchool()
this.initObj()
this.initToolBar()
}, },
methods: { 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() { initObj() {
if (this.saveObj) { if (this.saveObj) {
this.optionTitle = "修改教师信息" this.optionTitle = "修改教师信息"
...@@ -60,12 +160,83 @@ export default { ...@@ -60,12 +160,83 @@ export default {
TeacherIcon: '', TeacherIcon: '',
TeacherSay: '', TeacherSay: '',
TeacherIntro: '', TeacherIntro: '',
IsShow: '1', IsShow: 1,
IsRecommend: '0', IsRecommend: 0,
SortNum: 1 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> </script>
......
...@@ -238,8 +238,8 @@ export default { ...@@ -238,8 +238,8 @@ export default {
}, },
mounted() { mounted() {
let i = 0 let i = 0
if (lockr.get("current_navs")) { if (sessionStorage.getItem("current_navs")) {
i = lockr.get("current_navs") i = sessionStorage.getItem("current_navs")
} }
this.tab = `navs_${i}` this.tab = `navs_${i}`
if (this.userInfo && this.userInfo.MenuList) { if (this.userInfo && this.userInfo.MenuList) {
...@@ -261,7 +261,7 @@ export default { ...@@ -261,7 +261,7 @@ export default {
}, },
setNavs(val) { setNavs(val) {
//防止页面数据丢失 //防止页面数据丢失
lockr.set("current_navs", val) sessionStorage.setItem("current_navs", val)
this.tab = `navs_${val}` this.tab = `navs_${val}`
this.secondNavs = this.userInfo.MenuList[val].SubList this.secondNavs = this.userInfo.MenuList[val].SubList
this.$router.push({ this.$router.push({
......
...@@ -230,7 +230,7 @@ export default { ...@@ -230,7 +230,7 @@ export default {
}, },
changePage(val) { changePage(val) {
this.msg.Status = this.StatusTemp ? this.StatusTemp.value : '-1' this.msg.Status = this.StatusTemp ? this.StatusTemp.value : '-1'
this.msg.pageIndex = 1 this.msg.pageIndex = val
this.loading = true this.loading = true
this.getSchool() this.getSchool()
}, },
...@@ -272,6 +272,8 @@ export default { ...@@ -272,6 +272,8 @@ export default {
} }
this.getSchool() this.getSchool()
this.closeSaveForm() this.closeSaveForm()
}).catch(() => {
this.saveLoading = false
}) })
} else { } else {
this.saveLoading = false this.saveLoading = false
......
...@@ -18,15 +18,15 @@ ...@@ -18,15 +18,15 @@
<div class="page-option"> <div class="page-option">
<!-- 原则上不能操作过三个按钮,建议不要使用查询按钮,增加用户操作次数 --> <!-- 原则上不能操作过三个按钮,建议不要使用查询按钮,增加用户操作次数 -->
<!-- <q-btn color="primary" outline label="立即查询" /> --> <!-- <q-btn color="primary" outline label="立即查询" /> -->
<q-btn color="accent" class="q-mr-md" icon="add" label="新增教师" @click="initObj(null)" /> <q-btn color="accent" class="q-mr-md" icon="add" label="新增教师" @click="addObj(null)" />
<q-btn-dropdown outline color="dark" label="更多"> <q-btn-dropdown outline color="dark" label="更多">
<q-list> <q-list>
<q-item clickable v-close-popup @click="onItemClick"> <q-item clickable v-close-popup>
<q-item-section> <q-item-section>
<q-item-label>批量导入</q-item-label> <q-item-label>批量导入</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
<q-item clickable v-close-popup @click="onItemClick"> <q-item clickable v-close-popup>
<q-item-section> <q-item-section>
<q-item-label>批量导出</q-item-label> <q-item-label>批量导出</q-item-label>
</q-item-section> </q-item-section>
...@@ -71,11 +71,11 @@ ...@@ -71,11 +71,11 @@
</template> </template>
<template v-slot:body-cell-optioned="props"> <template v-slot:body-cell-optioned="props">
<q-td :props="props"> <q-td :props="props">
<q-btn flat size="xs" icon="edit" color="accent" style="font-family:perfectFont" label="编辑" @click="initObj(props.value)" /> <q-btn flat size="xs" icon="edit" color="accent" style="font-family:perfectFont" label="编辑" @click="addObj(props.value)" />
</q-td> </q-td>
</template> </template>
</q-table> </q-table>
<teacher-form v-if="persistent" :save-obj="objOption" @close="closeSaveForm" @success=""></teacher-form>
</div> </div>
</div> </div>
</template> </template>
...@@ -84,10 +84,14 @@ ...@@ -84,10 +84,14 @@
import { import {
getTeacherPage getTeacherPage
} from '../../api/school/index' } from '../../api/school/index'
import teacherForm from '../../components/school/teacher-form'
export default { export default {
meta: { meta: {
title: "教师管理" title: "教师管理"
}, },
components: {
teacherForm
},
data() { data() {
return { return {
currentUrl: "", currentUrl: "",
...@@ -207,8 +211,7 @@ export default { ...@@ -207,8 +211,7 @@ export default {
}, },
pageCount: 0, pageCount: 0,
persistent: false, persistent: false,
objOption: {}, objOption: null
saveLoading: false
} }
}, },
mounted() { mounted() {
...@@ -216,40 +219,10 @@ export default { ...@@ -216,40 +219,10 @@ export default {
this.getTeacher() this.getTeacher()
}, },
methods: { 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() { resetSearch() {
this.pageIndex = 1 this.pageIndex = 1
//this.pageCount = 0 //this.pageCount = 0
this.loading = true this.loading = true
this.msg.Status = this.StatusTemp ? this.StatusTemp.value : '-1'
this.getTeacher() this.getTeacher()
}, },
changePage(val) { changePage(val) {
...@@ -268,40 +241,38 @@ export default { ...@@ -268,40 +241,38 @@ export default {
this.loading = false 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() { closeSaveForm() {
this.persistent = false 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> </script>
......
...@@ -4,7 +4,8 @@ import Lockr from 'lockr' ...@@ -4,7 +4,8 @@ import Lockr from 'lockr'
const app = { const app = {
state: { state: {
logo: '', logo: '',
name: '' name: '',
currentNavs: 0
}, },
mutations: { mutations: {
...@@ -13,6 +14,9 @@ const app = { ...@@ -13,6 +14,9 @@ const app = {
}, },
SET_APPNAME: (state, name) => { SET_APPNAME: (state, name) => {
state.name = name state.name = name
},
SET_CURRENTNAVS: (state, nav) => {
state.currentNavs = nav
} }
}, },
...@@ -25,6 +29,9 @@ const app = { ...@@ -25,6 +29,9 @@ const app = {
commit('SET_APPLOGO', GroupLogo) commit('SET_APPLOGO', GroupLogo)
Lockr.set('systemLogo', GroupName) Lockr.set('systemLogo', GroupName)
Lockr.set('systemName', GroupLogo) Lockr.set('systemName', GroupLogo)
},
SystemNavsChange({ commit }, nav) {
commit('SET_CURRENTNAVS', nav)
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment