ソースを参照

library search + source query parameters

hare8999@163.com 2 年 前
コミット
353f8e8ce4

+ 5 - 0
src/common/mx-const.js

@@ -90,6 +90,11 @@ export default {
         value: 2,
         title: '测评专业'
       }
+    },
+    librarySource: {
+      question: 1,
+      video: 2,
+      courseware: 3
     }
   }
 }

+ 11 - 3
src/components/formSearch/index.vue

@@ -183,6 +183,10 @@ export default {
       type: Boolean,
       default: false
     },
+    extraParams: {
+      type: Object,
+      default: () => ({})
+    },
     validateRules: {
       // 表单校验
       type: Object,
@@ -523,6 +527,7 @@ export default {
         this.infoStudentGradeId()
       }
       this.queryParams[key] = this.searchformShow[key]
+      this.$nextTick(_ => this.handleQuery())
     })
   },
   computed: {
@@ -598,7 +603,8 @@ export default {
       const subjectRequired = this.validateRules.subjectid?.find(r => r.required)
       if (!subjectRequired) subjectData.dicData.push({ name: '所有', code: '' })
 
-      let subjectParam = {}
+      const extra = this.extraParams['subjectid'] || {}
+      let subjectParam = { ...extra }
       const subjectFunc = system.getSubjectsList //subject.userList;
       const subjectFuncName = 'subject.userList'
       subjectFunc(subjectParam)
@@ -630,7 +636,8 @@ export default {
       const subjectRequired = this.validateRules.userSubject?.find(r => r.required)
       if (!subjectRequired) subjectData.dicData.push({ name: '所有', code: '' })
 
-      let subjectParam = {}
+      const extra = this.extraParams['userSubject'] || {}
+      let subjectParam = { ...extra }
       system.getUserSubjectsList(subjectParam)
         .then((response) => {
           const mappedSubjects = response.data.map((subject) => ({
@@ -678,7 +685,8 @@ export default {
       const editionRequired = this.validateRules.edition?.find(r => r.required)
       if (!editionRequired) editionData.dicData.push({ name: '所有', code: '' })
 
-      const editionParam = { subjectId: value }
+      const extra = this.extraParams['edition'] || {}
+      const editionParam = { subjectId: value, ...extra }
       system.getGradeEditionList(editionParam)
         .then((response) => {
           const editions = response.data.map(g => ({

+ 15 - 2
src/views/accurateTeaching/custom/custom.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="app-container">
-    <form-search :searchformShow="searchformShow" :validate-rules="searchRules" @handleQuery="handleQuery"
-                 @resetQuery="resetQuery"></form-search>
+    <form-search :searchformShow="searchformShow" :validate-rules="searchRules" :extra-params="extraParams"
+                 @handleQuery="handleQuery" @resetQuery="resetQuery"></form-search>
     <el-card class="box-card" style="margin-bottom:30px">
       <el-row :gutter="24">
         <el-col :span="4" v-if="viewName!='Custom'">
@@ -110,6 +110,7 @@ import { add, downToPersonResourse, getInfo, list, remove, update } from '@/api/
 import { knowledgeTree, treeList } from '@/api/webApi/webQue.js'
 import { mapGetters } from 'vuex'
 import ResourcePreviewButton from '@/views/accurateTeaching/components/resource-preview-button'
+import consts from '@/common/mx-const'
 
 export default {
   components: { ResourcePreviewButton },
@@ -121,6 +122,7 @@ export default {
       treeLoading: false,
       searchformShow: {},
       searchRules: {},
+      extraParams: {},
       dialogVisible: false,
       treeProps: {
         children: 'children',
@@ -208,6 +210,7 @@ export default {
         slipid: ''
       }
       this.searchRules = {}
+      this.extraParams = {}
     } else if (this.viewName == 'Courseware') {
       this.searchformShow = {
         subjectid: '',
@@ -216,12 +219,14 @@ export default {
         coursewareType: ''
       }
       this.searchRules = this.createCoursewareRules()
+      this.extraParams = this.createCoursewareParams()
     } else {
       this.searchformShow = {
         subjectid: '',
         resourceType: ''
       }
       this.searchRules = {}
+      this.extraParams = {}
     }
     this.getDicts('resource_type').then((response) => {
       this.typeOptions = response.data
@@ -381,6 +386,14 @@ export default {
         slipid: [{ required: true, message: '学册必选' }]
       }
     },
+    createCoursewareParams() {
+      const sharedParams = { source: consts.enum.librarySource.courseware }
+      return {
+        subjectid: sharedParams,
+        edition: sharedParams,
+        slipid: sharedParams
+      }
+    },
     /** 新增按钮操作 */
     handleAdd() {
       this.reset()

+ 15 - 2
src/views/accurateTeaching/library/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="app-container">
-    <form-search :searchformShow="searchformShow" :validate-rules="searchRules" :coursewareUpload="coursewareUpload"
-                 @handleQuery="handleQuery" @resetQuery="resetQuery"></form-search>
+    <form-search :searchformShow="searchformShow" :validate-rules="searchRules" :extra-params="extraParams"
+                 :coursewareUpload="coursewareUpload" @handleQuery="handleQuery" @resetQuery="resetQuery"></form-search>
     <el-card class="box-card" style="margin-bottom: 30px">
       <el-row :gutter="24">
         <el-col :span="4" v-if="viewName != 'Custom'">
@@ -169,6 +169,7 @@ import {
 import { knowledgeTree, treeList } from '@/api/webApi/webQue.js'
 import { mapGetters } from 'vuex'
 import ResourcePreviewButton from '@/views/accurateTeaching/components/resource-preview-button'
+import consts from '@/common/mx-const'
 
 export default {
   components: { ResourcePreviewButton },
@@ -187,6 +188,7 @@ export default {
       treeLoading: false,
       searchformShow: {},
       searchRules: {},
+      extraParams: {},
       dialogVisible: false,
       img: {
         ship: require('@/assets/images/ship.png')
@@ -296,6 +298,7 @@ export default {
         slipid: ''
       }
       this.searchRules = {}
+      this.extraParams = {}
     } else if (this.viewName == 'Personal') {
       this.coursewareUpload = true
       this.searchformShow = {
@@ -305,6 +308,7 @@ export default {
         coursewareType: ''
       }
       this.searchRules = this.createCoursewareRules()
+      this.extraParams = this.createCoursewareParams()
     } else {
       this.coursewareUpload = true
       this.searchformShow = {
@@ -312,6 +316,7 @@ export default {
         resourceType: ''
       }
       this.searchRules = {}
+      this.extraParams = {}
     }
     this.getDicts('resource_type').then((response) => {
       this.typeOptions = response.data
@@ -615,6 +620,14 @@ export default {
         slipid: [{ required: true, message: '学册必选' }]
       }
     },
+    createCoursewareParams() {
+      const sharedParams = { source: consts.enum.librarySource.courseware }
+      return {
+        subjectid: sharedParams,
+        edition: sharedParams,
+        slipid: sharedParams
+      }
+    },
     /** 新增按钮操作 */
     handleAdd() {
       this.reset()

+ 17 - 9
src/views/cloudTank/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="app-container">
-    <form-search :searchformShow="searchformShow" :validate-rules="searchRules" @handleQuery="handleQuery"
-                 @resetQuery="resetQuery"></form-search>
+    <form-search :searchformShow="searchformShow" :validate-rules="searchRules" :extra-params="extraParams"
+                 @handleQuery="handleQuery" @resetQuery="resetQuery"></form-search>
     <el-card class="box-card" style="margin-bottom:30px">
       <el-row :gutter="24">
         <el-col :span="4">
@@ -101,6 +101,7 @@ import {
 import { treeList } from '@/api/webApi/webQue.js'
 import { mapGetters } from 'vuex'
 import ResourcePreviewButton from '@/views/accurateTeaching/components/resource-preview-button'
+import consts from '@/common/mx-const'
 
 export default {
   components: { ResourcePreviewButton },
@@ -108,6 +109,7 @@ export default {
     return {
       searchformShow: {},
       searchRules: {},
+      extraParams: {},
       dialogVisible: false,
       img: {
         ship: require('@/assets/images/ship.png')
@@ -206,6 +208,7 @@ export default {
         slipid: ''
       }
       this.searchRules = {}
+      this.extraParams = {}
     } else if (this.viewName == 'Courseware') {
       this.searchformShow = {
         province: '',
@@ -215,6 +218,7 @@ export default {
         coursewareType: ''
       }
       this.searchRules = this.createCoursewareRules()
+      this.extraParams = this.createCoursewareParams()
     }
     this.getList()
     this.getDicts('resource_type').then((response) => {
@@ -235,6 +239,14 @@ export default {
         slipid: [{ required: true, message: '学册必选' }]
       }
     },
+    createCoursewareParams() {
+      const sharedParams = { source: consts.enum.librarySource.courseware }
+      return {
+        subjectid: sharedParams,
+        edition: sharedParams,
+        slipid: sharedParams
+      }
+    },
     /** 查询个人资源库列表 */
     getList() {
       this.loading = true
@@ -354,17 +366,12 @@ export default {
         remark: null
       }
     },
-    formChange(data, type) {
-      console.log(data)
-      this.queryParams = data
-      this.getTreeselect(type)
-    },
     /** 搜索按钮操作 */
-    handleQuery(data, type) {
+    async handleQuery(data, type) {
       this.pageNum = 1
       this.queryParams = Object.assign(this.queryParams, data)
+      await this.getTreeselect(type)
       this.getList()
-      this.getTreeselect(type)
     },
     /** 重置按钮操作 */
     resetQuery(data) {
@@ -459,6 +466,7 @@ export default {
       if (type == 'coursewareType') return
       if (!this.queryParams.slipid) {
         this.deptOptions = []
+        this.queryParams.chapterId = ''
         return
       }
       if (type != 'slipid') {