mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/learning-system-portal.git
synced 2025-12-12 20:36:43 +08:00
选择教师
This commit is contained in:
113
src/components/Course/choice.vue
Normal file
113
src/components/Course/choice.vue
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
<template>
|
||||||
|
<div class="choice">
|
||||||
|
<el-tag type="info"
|
||||||
|
closable
|
||||||
|
v-for="(item,index) in teacherValueList"
|
||||||
|
:key="item.teacherId"
|
||||||
|
@close="handleClose(item,index)">{{item.teacherName}}</el-tag>
|
||||||
|
<el-select
|
||||||
|
style="width: 100%;"
|
||||||
|
v-model="teacherValues"
|
||||||
|
filterable
|
||||||
|
remote
|
||||||
|
clearable
|
||||||
|
value-key="teacherId"
|
||||||
|
ref="elSelect"
|
||||||
|
reserve-keyword
|
||||||
|
placeholder="请输入授课教师姓名"
|
||||||
|
@change="changeTeachers"
|
||||||
|
:remote-method="remoteFindTeacher"
|
||||||
|
:loading="loading">
|
||||||
|
<el-option v-for="item in teacherDownList" :key="item.teacherId" :label="item.teacherName + item.teacherCode" :value="item"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { mapGetters } from 'vuex';
|
||||||
|
import apiTeacher from '../../api/modules/teacher.js';
|
||||||
|
export default{
|
||||||
|
name: 'choice',
|
||||||
|
computed: {
|
||||||
|
...mapGetters(['userInfo'])
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
teacherValue:{
|
||||||
|
type:Array,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data(){
|
||||||
|
return {
|
||||||
|
teacherValueList:[],
|
||||||
|
teacherValues:{},
|
||||||
|
loading:false,
|
||||||
|
teacherDownList:[],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch:{
|
||||||
|
teacherValue(val) {
|
||||||
|
this.teacherValueList = val;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted(){
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
handleClose(item,index){
|
||||||
|
this.teacherValueList.splice(index, 1);
|
||||||
|
this.$emit('getTeacherList',this.teacherValueList);
|
||||||
|
},
|
||||||
|
changeTeachers(t) {
|
||||||
|
if(t) {
|
||||||
|
let isCan = this.teacherValueList.some(it=>it.teacherId == t.teacherId);
|
||||||
|
if(isCan){
|
||||||
|
this.teacherValues = {};
|
||||||
|
this.teacherDownList = [];
|
||||||
|
this.$message.warning('教师重复,请重新选择!')
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.teacherValueList.push(t);
|
||||||
|
this.teacherDownList = [];
|
||||||
|
this.teacherValues = {};
|
||||||
|
this.$emit('getTeacherList',this.teacherValueList);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 教师列标,远程查询
|
||||||
|
async remoteFindTeacher(query) {
|
||||||
|
if (query) {
|
||||||
|
this.loading = true;
|
||||||
|
try {
|
||||||
|
const { result, message, status } = await apiTeacher.findByName(query);
|
||||||
|
this.loading = false;
|
||||||
|
if (status === 200) {
|
||||||
|
let list = [];
|
||||||
|
result.forEach(item => {
|
||||||
|
list.push({
|
||||||
|
teacherId: item.id,
|
||||||
|
teacherName: item.name,
|
||||||
|
teacherCode: item.code
|
||||||
|
});
|
||||||
|
});
|
||||||
|
this.teacherDownList = list;
|
||||||
|
} else {
|
||||||
|
this.$message.error('查询教师信息失败:' + message);
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
this.loading = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.teacherDownList = [];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
.choice{
|
||||||
|
.el-tag--info{
|
||||||
|
height: 22px;
|
||||||
|
line-height: 22px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="授课教师" required>
|
<el-form-item label="授课教师" required>
|
||||||
<!--授课老师默认是当前操作人-->
|
<!--授课老师默认是当前操作人-->
|
||||||
<el-select
|
<!-- <el-select
|
||||||
style="width: 100%;"
|
style="width: 100%;"
|
||||||
v-model="teacherValues"
|
v-model="teacherValues"
|
||||||
multiple
|
multiple
|
||||||
@@ -104,7 +104,8 @@
|
|||||||
:remote-method="remoteFindTeacher"
|
:remote-method="remoteFindTeacher"
|
||||||
:loading="loading">
|
:loading="loading">
|
||||||
<el-option v-for="item in teacherDownList" :key="item.teacherId" :label="item.teacherName + item.teacherCode" :value="item"></el-option>
|
<el-option v-for="item in teacherDownList" :key="item.teacherId" :label="item.teacherName + item.teacherCode" :value="item"></el-option>
|
||||||
</el-select>
|
</el-select> -->
|
||||||
|
<choice :teacherValue="teacherValues" @getTeacherList="getTeacherList"></choice>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="目标人群" required>
|
<el-form-item label="目标人群" required>
|
||||||
<el-input maxlength="50" v-model="courseInfo.forUsers" show-word-limit placeholder="目标人群(限50字以内)"></el-input>
|
<el-input maxlength="50" v-model="courseInfo.forUsers" show-word-limit placeholder="目标人群(限50字以内)"></el-input>
|
||||||
@@ -234,7 +235,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="授课教师" required>
|
<el-form-item label="授课教师" required>
|
||||||
<!--授课老师默认是当前操作人-->
|
<!--授课老师默认是当前操作人-->
|
||||||
<el-select
|
<!-- <el-select
|
||||||
style="width: 100%;"
|
style="width: 100%;"
|
||||||
v-model="teacherValues"
|
v-model="teacherValues"
|
||||||
multiple
|
multiple
|
||||||
@@ -248,7 +249,8 @@
|
|||||||
:remote-method="remoteFindTeacher"
|
:remote-method="remoteFindTeacher"
|
||||||
:loading="loading">
|
:loading="loading">
|
||||||
<el-option v-for="item in teacherDownList" :key="item.teacherId" :label="item.teacherName + item.teacherCode" :value="item"></el-option>
|
<el-option v-for="item in teacherDownList" :key="item.teacherId" :label="item.teacherName + item.teacherCode" :value="item"></el-option>
|
||||||
</el-select>
|
</el-select> -->
|
||||||
|
<choice :teacherValue="teacherValues" @getTeacherList="getTeacherList"></choice>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -379,7 +381,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import agreement from '@/components/Portal/agreement.vue'
|
import choice from '@/components/Course/choice.vue';
|
||||||
|
import agreement from '@/components/Portal/agreement.vue';
|
||||||
import weikeContent from '@/components/Course/weikeContent.vue';
|
import weikeContent from '@/components/Course/weikeContent.vue';
|
||||||
import catalogCourseware from '@/components/Course/catalogCourseware.vue';
|
import catalogCourseware from '@/components/Course/catalogCourseware.vue';
|
||||||
import imageUpload from '@/components/ImageUpload/index.vue';
|
import imageUpload from '@/components/ImageUpload/index.vue';
|
||||||
@@ -396,7 +399,7 @@ import { mapGetters, mapActions } from 'vuex';
|
|||||||
import filecloud from '@/components/FileCloud/index.vue';
|
import filecloud from '@/components/FileCloud/index.vue';
|
||||||
export default {
|
export default {
|
||||||
props: {},
|
props: {},
|
||||||
components: { weikeContent, catalogCourseware, imageUpload, WxEditor, catalogSort,agreement,filecloud},
|
components: { weikeContent, catalogCourseware, imageUpload, WxEditor, catalogSort,agreement,filecloud,choice},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
checked:false,
|
checked:false,
|
||||||
@@ -530,6 +533,9 @@ export default {
|
|||||||
this.loadUserGroup();
|
this.loadUserGroup();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
getTeacherList(res) {
|
||||||
|
this.teacherValues = res;
|
||||||
|
},
|
||||||
chooseFile(){
|
chooseFile(){
|
||||||
this.dlgFileChoose.show=true;
|
this.dlgFileChoose.show=true;
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user