|
@@ -4,7 +4,7 @@
|
|
|
<Radio label="private">{{ $t('survey.form.privateClass') }}</Radio>
|
|
|
<Radio label="school" v-if="hasSchool">{{ $t('survey.form.schoolClass') }}</Radio>
|
|
|
</RadioGroup>
|
|
|
- <el-cascader v-if="isShowCascader" v-model="defaultArr" :key="modelKey" :props="props" :options="curCusList" @change="treeChange" :show-all-levels="false" clearable filterable></el-cascader>
|
|
|
+ <el-cascader v-model="defaultArr" :key="evaluationInfo.scope" :props="props" :options="evaluationInfo.scope === 'private' ? privateList : schoolList" @change="treeChange" :show-all-levels="false" clearable filterable></el-cascader>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -23,8 +23,6 @@ export default {
|
|
|
data() {
|
|
|
const _this = this
|
|
|
return {
|
|
|
- modelKey:1,
|
|
|
- isShowCascader:true,
|
|
|
schoolBase: {
|
|
|
period: []
|
|
|
},
|
|
@@ -38,153 +36,21 @@ export default {
|
|
|
},
|
|
|
props: {
|
|
|
multiple: true,
|
|
|
- lazy: true,
|
|
|
- lazyLoad(node, resolve) {
|
|
|
- const { level } = node
|
|
|
- let scope = _this.evaluationInfo.scope
|
|
|
- // 一级菜单首次加载
|
|
|
- if (level == 0 && _this.courseList.length == 0) {
|
|
|
- let requestData = {
|
|
|
- 'code': _this.$store.state.userInfo.TEAMModelId,
|
|
|
- 'schoolId': _this.$store.state.userInfo.schoolCode,
|
|
|
- 'scope': 'private'
|
|
|
- }
|
|
|
- _this.$api.courseMgmt.findCourse(requestData).then(
|
|
|
- (res) => {
|
|
|
- if (res.error) {
|
|
|
- _this.$Message.error('API ERROR!')
|
|
|
- return
|
|
|
- }
|
|
|
- _this.courseList = res.courses
|
|
|
- let scope = _this.evaluationInfo.scope
|
|
|
- let curCus = _this.courseList.filter(item => {
|
|
|
- return item.scope == scope
|
|
|
- })
|
|
|
- let nodes = curCus.map(item => {
|
|
|
- return {
|
|
|
- value: item.id,
|
|
|
- label: item.name,
|
|
|
- leaf: level >= 1
|
|
|
- }
|
|
|
- })
|
|
|
- resolve(nodes)
|
|
|
- },
|
|
|
- (err) => {
|
|
|
- _this.$Message.error('API ERROR!')
|
|
|
- }
|
|
|
- )
|
|
|
- }
|
|
|
- // 一级菜单非首次加载
|
|
|
- else if (level == 0 && _this.courseList.length > 0) {
|
|
|
- let curCus = _this.courseList.filter(item => {
|
|
|
- return item.scope == scope
|
|
|
- })
|
|
|
- let nodes = curCus.map(item => {
|
|
|
- return {
|
|
|
- value: item.id,
|
|
|
- label: item.name,
|
|
|
- leaf: true
|
|
|
- }
|
|
|
- })
|
|
|
- resolve(nodes)
|
|
|
- }
|
|
|
- // 加载二级菜单
|
|
|
- else if (level == 1) {
|
|
|
- console.log(node)
|
|
|
- let course = node.data
|
|
|
- let requestData = {
|
|
|
- 'code': scope == 'school' ? _this.$store.state.userInfo.schoolCode : _this.$store.state.userInfo.TEAMModelId,
|
|
|
- 'scope': scope,
|
|
|
- 'id': course.value
|
|
|
- }
|
|
|
- _this.$api.courseMgmt.findCusInfo(requestData).then(
|
|
|
- async (res) => {
|
|
|
- if (res.error) {
|
|
|
- resolve([])
|
|
|
- return
|
|
|
- }
|
|
|
- // 获取自定义名单信息
|
|
|
- let ids = res.courses[0].schedule.map(item => {
|
|
|
- return item.stulist
|
|
|
- })
|
|
|
- for (let i = 0; i < ids.length; i++) {
|
|
|
- if (!ids[i]) {
|
|
|
- ids.splice(i, 1)
|
|
|
- i--
|
|
|
- }
|
|
|
- }
|
|
|
- if (ids.length) {
|
|
|
- try {
|
|
|
- let listRes = await _this.getListInfo([...ids])
|
|
|
- if (listRes) _this.stuList.push(...listRes.stuList)
|
|
|
- } catch (e) {
|
|
|
- console.log(e)
|
|
|
- _this.$Message.error('API error')
|
|
|
- }
|
|
|
- }
|
|
|
- //一个名单被安排到不同教室上课会出现重复数据,这里需要去重
|
|
|
- let list = []
|
|
|
- if (res.courses && res.courses.length > 0) {
|
|
|
- res.courses[0].schedule = res.courses[0].schedule ? res.courses[0].schedule : []
|
|
|
- res.courses[0].schedule.forEach(item => {
|
|
|
- // 补充教室信息
|
|
|
- if (item.classId) {
|
|
|
- let classInfo = _this.schoolClassList.find(classItem => {
|
|
|
- return classItem.id == item.classId
|
|
|
- })
|
|
|
- item.classInfo = {
|
|
|
- id: item.classId,
|
|
|
- name: classInfo ? `${classInfo.name}` : ' - -'
|
|
|
- }
|
|
|
- }
|
|
|
- // 补充名单信息
|
|
|
- if (item.stulist) {
|
|
|
- let listInfo = _this.stuList.find(listItem => {
|
|
|
- return listItem.id == item.stulist
|
|
|
- })
|
|
|
- item.listName = listInfo ? `${listInfo.name}` : ' - -'
|
|
|
- }
|
|
|
- //统一数据格式
|
|
|
- item.classId = item.classId || undefined
|
|
|
- item.stulist = item.stulist || undefined
|
|
|
- // 一个名单被安排到不同教室上课会出现重复数据,这里做去重操作
|
|
|
- let has = list.find(listItem => {
|
|
|
- return listItem.classId == item.classId && item.stulist == listItem.stulist
|
|
|
- })
|
|
|
- if (!has) {
|
|
|
- list.push(item)
|
|
|
- }
|
|
|
- })
|
|
|
- res.courses[0].teaClasses = list.filter(item => {
|
|
|
- return item.classId || item.stulist
|
|
|
- })
|
|
|
- }
|
|
|
-
|
|
|
- let nodes = res.courses[0].teaClasses.map(item => {
|
|
|
- return {
|
|
|
- value: item.stulist || item.classId,
|
|
|
- label: item.listName || item.classInfo.name,
|
|
|
- leaf: level >= 1
|
|
|
- }
|
|
|
- })
|
|
|
- resolve(nodes)
|
|
|
- }
|
|
|
- )
|
|
|
- } else {
|
|
|
- resolve([])
|
|
|
- }
|
|
|
- }
|
|
|
+ emitPath:false,
|
|
|
+ value: 'id',
|
|
|
+ label: 'name',
|
|
|
},
|
|
|
+ curCusList:[],
|
|
|
+ privateList:[],
|
|
|
+ schoolList:[]
|
|
|
};
|
|
|
},
|
|
|
methods: {
|
|
|
treeChange(data) {
|
|
|
- let classIds = data.map(i => i[i.length - 1])
|
|
|
- this.classIds = classIds
|
|
|
- console.log(data)
|
|
|
this.$emit('onChange', data)
|
|
|
},
|
|
|
onClassTypeChange(val) {
|
|
|
+ this.defaultArr = []
|
|
|
this.evaluationInfo.scope = val
|
|
|
},
|
|
|
//根据id获取stulist信息
|
|
@@ -196,8 +62,41 @@ export default {
|
|
|
}
|
|
|
return this.$api.courseMgmt.findListSummary(requestData)
|
|
|
},
|
|
|
+ // 获取当前教师所有可以选择的课程(包括个人课程和学校分配给自己的课程)
|
|
|
+ getCourseList(){
|
|
|
+ return new Promise((r,j) => {
|
|
|
+ this.$api.courseMgmt.findAllByTeahcer({
|
|
|
+ code:this.$store.state.userInfo.TEAMModelId,
|
|
|
+ scope:'private',
|
|
|
+ schoolId:this.$store.state.userInfo.schoolCode,
|
|
|
+ }).then((res) => {
|
|
|
+ if(res.obj.length){
|
|
|
+ r(res.obj.map(j => {
|
|
|
+ return {
|
|
|
+ id:j.id,
|
|
|
+ name:j.name,
|
|
|
+ scope:j.scope,
|
|
|
+ children:j.classes
|
|
|
+ }
|
|
|
+ }))
|
|
|
+ }
|
|
|
+ }).catch((err) => {
|
|
|
+ j(err)
|
|
|
+ });
|
|
|
+ })
|
|
|
+ },
|
|
|
+ async getCourseData(){
|
|
|
+ if(this.curCusList.length) return
|
|
|
+ this.curCusList = await this.getCourseList()
|
|
|
+ this.privateList = this.curCusList.filter(i => i.scope === 'private')
|
|
|
+ this.schoolList = this.curCusList.filter(i => i.scope === 'school')
|
|
|
+ console.error(this.privateList);
|
|
|
+ }
|
|
|
},
|
|
|
mounted() {
|
|
|
+
|
|
|
+ console.log('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
|
|
|
+
|
|
|
this.$store.dispatch('user/getSchoolProfile').then(
|
|
|
res => {
|
|
|
this.schoolBase = res.school_base
|
|
@@ -209,21 +108,23 @@ export default {
|
|
|
this.$EventBus.$on('onCreateVote',() => {
|
|
|
this.defaultArr = []
|
|
|
})
|
|
|
+
|
|
|
+ this.getCourseData()
|
|
|
},
|
|
|
computed: {
|
|
|
- curCusList() {
|
|
|
- let cus = this.courseList.filter(item => {
|
|
|
- return item.scope == this.evaluationInfo.scope
|
|
|
- })
|
|
|
- let nodes = cus.map(item => {
|
|
|
- return {
|
|
|
- value: item.id,
|
|
|
- label: item.name,
|
|
|
- leaf: false
|
|
|
- }
|
|
|
- })
|
|
|
- return nodes
|
|
|
- },
|
|
|
+ // curCusList() {
|
|
|
+ // let cus = this.courseList.filter(item => {
|
|
|
+ // return item.scope == this.evaluationInfo.scope
|
|
|
+ // })
|
|
|
+ // let nodes = cus.map(item => {
|
|
|
+ // return {
|
|
|
+ // value: item.id,
|
|
|
+ // label: item.name,
|
|
|
+ // leaf: false
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ // return nodes
|
|
|
+ // },
|
|
|
hasSchool() {
|
|
|
return this.$store.state.userInfo.schoolCode !== 'SYSTEM_NO_SCHOOL'
|
|
|
},
|
|
@@ -234,11 +135,6 @@ export default {
|
|
|
if(n.length){
|
|
|
console.log(n);
|
|
|
this.defaultArr = n
|
|
|
- this.modelKey++
|
|
|
- // this.isShowCascader = false
|
|
|
- // setTimeout(() => {
|
|
|
- // this.isShowCascader = true
|
|
|
- // },500)
|
|
|
}
|
|
|
},
|
|
|
immediate:true,
|