Commit a5f26e75 authored by 罗超's avatar 罗超

处理完成教师的功能

parent a2130725
......@@ -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
......@@ -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="saveSchool" />
<q-btn label="立即提交" color="accent q-px-md" style="font-weight:400 !important" :loading="saveLoading" @click="saveTeacher" />
</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>
......
......@@ -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({
......
......@@ -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
......
......@@ -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="initObj(null)" />
<q-btn color="accent" class="q-mr-md" icon="add" label="新增教师" @click="addObj(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="initObj(props.value)" />
<q-btn flat size="xs" icon="edit" color="accent" style="font-family:perfectFont" label="编辑" @click="addObj(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>
......
......@@ -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)
}
}
}
......
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