Przeglądaj źródła

1、优化查询课程类型数据下拉
2、课程类型新增下拉中只保留年级
3、blockly编程列表图片游览冲突问题解决
4、课程管理:类型筛选拆分成实操课和通识课两个筛选条件

liyanbo 5 miesięcy temu
rodzic
commit
c71f803645

+ 4 - 0
src/api/bjdx/coursetype/index.ts

@@ -17,6 +17,10 @@ export const CourseTypeApi = {
   getCourseTypeList: async (params) => {
     return await request.get({ url: `/bjdx/course-type/list`, params })
   },
+  // 查询课程-类型列表
+  getCourseTypeSimpleList: async (params) => {
+    return await request.get({ url: `/bjdx/course-type/simple-list`, params })
+  },
 
   // 查询课程-类型详情
   getCourseType: async (id: number) => {

+ 10 - 5
src/views/ai/mapgame/index.vue

@@ -75,7 +75,8 @@
             :src="scope.row.userImage" 
             fit="contain" 
             :preview-src-list="[scope.row.userImage]" 
-            :lazy="true" 
+            :lazy="true"
+            preview-teleported
             style="max-width: 60px; max-height: 60px;"
           />
         </template>
@@ -89,10 +90,14 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-      <el-table-column label="地图背景图" align="center" prop="mapBackground" >
-        <template #default="scope">
-          <el-image :src="scope.row.mapBackground" fit="contain" :preview-src-list="[scope.row.mapBackground]" />
-        </template>
+      <el-table-column label="地图背景图" align="center" prop="mapBackground" ><template #default="scope">
+        <el-image
+          :src="scope.row.mapBackground"
+          fit="contain"
+          :preview-src-list="[scope.row.mapBackground]"
+          preview-teleported
+        />
+      </template>
       </el-table-column>
       <el-table-column label="地图方格尺寸" align="center" prop="mapTileSize" >
         <template #default="scope">

+ 1 - 1
src/views/bjdx/course/CourseForm.vue

@@ -443,7 +443,7 @@ const resetForm = () => {
 /** 获得课程-类型树 */
 const getCourseTypeTree = async () => {
   courseTypeTree.value = []
-  const data = await CourseTypeApi.getCourseTypeList()
+  const data = await CourseTypeApi.getCourseTypeSimpleList()
   const root: Tree = { id: 0, ctType: '课程类型', ctTypeNode: '0', children: [] }
   root.children = handleTree(data, 'id', 'ctParentId')
   courseTypeTree.value.push(root)

+ 33 - 8
src/views/bjdx/course/index.vue

@@ -8,12 +8,23 @@
       :inline="true"
       label-width="90px"
     >
+      <el-form-item label="课程类型">
+        <el-select
+          v-model="queryParams.ctTypeNode"
+          placeholder="请选择课程类型"
+          class="!w-240px"
+          @change="handleCtTypeNodeChange"
+        >
+          <el-option label="ai通识课" value="1" />
+          <el-option label="ai实操课" value="2" />
+        </el-select>
+      </el-form-item>
       <el-form-item label="大纲课程" prop="courseType">
         <el-tree-select
           v-model="queryParams.courseType"
           :data="courseTypeTree"
           :props="{...defaultProps,
-            label: (node) => `${node.ctType}${node.ctTypeNode === '0' ? '(年级)' : node.ctTypeNode === '1' ? '(ai通识课)' : '(ai实操课)'}`,
+            label: (node) => `${node.ctTypeNode === '0' || node.ctTypeNode === undefined ? node.ctType : node.ctTypeSort + '、' + node.ctType}`,
             }"
           placeholder="请选择课程类型"
           :default-expand-all="true"
@@ -44,7 +55,7 @@
           class="!w-240px"
         />
       </el-form-item>
-      <el-form-item label="课程作者" prop="courseAuthor">
+<!--      <el-form-item label="课程作者" prop="courseAuthor">
         <el-input
           v-model="queryParams.courseAuthor"
           placeholder="请输入课程作者"
@@ -61,7 +72,7 @@
           @keyup.enter="handleQuery"
           class="!w-240px"
         />
-      </el-form-item>
+      </el-form-item>-->
       <el-form-item label="是否有检查" prop="courseIsInspect">
         <el-select
           v-model="queryParams.courseIsInspect"
@@ -253,6 +264,7 @@ const queryParams = reactive({
   courseSize: undefined,
   courseTime: undefined,
   courseIsInspect: undefined,
+  ctTypeNode: "1",//课程类型
   courseType: undefined,
   courseTypeName: undefined,
   courseLabel: undefined,
@@ -289,9 +301,17 @@ const handleQuery = async () => {
   getList()
 }
 
+/** 处理课程类型节点变更 */
+const handleCtTypeNodeChange = (ctTypeNode) => {
+  queryParams.courseType = undefined
+  getCourseTypeTree(ctTypeNode)
+}
+
 /** 重置按钮操作 */
 const resetQuery = () => {
   queryFormRef.value.resetFields()
+  queryParams.ctTypeNode = "1"
+  getCourseTypeTree()
   handleQuery()
 }
 
@@ -340,12 +360,17 @@ const handleExport = async () => {
 }
 
 /** 获得课程-类型树 */
-const getCourseTypeTree = async () => {
+const getCourseTypeTree = async (filterCtTypeNode = "1") => {
   courseTypeTree.value = []
-  const data = await CourseTypeApi.getCourseTypeList()
-  console.log(data)
-  const root: Tree = { id: 0, ctType: '课程类型', children: [] }
-  root.children = handleTree(data, 'id', 'ctParentId')
+  const data = await CourseTypeApi.getCourseTypeSimpleList()
+
+  let filteredData = data
+  if (filterCtTypeNode !== undefined) {
+    filteredData = data.filter(item => item.ctTypeNode === '0' || item.ctTypeNode === filterCtTypeNode)
+  }
+  console.log(filteredData)
+  const root: Tree = { id: 0, ctType: '课程类型' + (filterCtTypeNode === "1" ? '(ai通识课)' : '(ai实操课)'), children: [] }
+  root.children = handleTree(filteredData, 'id', 'ctParentId')
   courseTypeTree.value.push(root)
 }
 

+ 10 - 5
src/views/bjdx/coursetype/CourseTypeForm.vue

@@ -11,7 +11,10 @@
         <el-tree-select
           v-model="formData.ctParentId"
           :data="courseTypeTree"
-          :props="{ ...defaultProps, label: 'ctType' }"
+          :props="{...defaultProps,
+            label: (node) => `${node.ctType}${node.ctTypeNode === '0' ? '(年级)' : node.ctTypeNode === '1' ? '(ai通识课)' :  node.ctTypeNode === '2' ?'(ai实操课)' : ''}`,
+            disabled: (node) => node.id !== 0 && node.ctTypeNode !== '0'
+            }"
           :default-expanded-keys="[0]"
           check-strictly
           default-expand-all
@@ -28,7 +31,7 @@
       <el-form-item label="课程类型名称" prop="ctType">
         <el-input v-model="formData.ctType" placeholder="请输入课程类型名称" />
       </el-form-item>
-      <el-form-item label="课程封面" prop="ctType">
+      <el-form-item label="课程封面" prop="ctTypeImage">
         <UploadImg v-model="formData.ctTypeImage" />
       </el-form-item>
       <el-form-item label="课程类型描述" prop="ctTypeDescribe">
@@ -76,7 +79,7 @@ const formData = ref({
 const formRules = reactive({
   ctParentId: [{ required: true, message: '父级节点不能为空', trigger: 'blur' }],
   ctTypeNode: [{ required: true, message: '节点类型不能为空', trigger: 'blur' }],
-  // ctType: [{ required: true, message: '类型名称不能为空', trigger: 'blur' }],
+  ctType: [{ required: true, message: '类型名称不能为空', trigger: 'blur' }],
   ctTypeSort: [{ required: true, message: '排序不能为空', trigger: 'blur' }],
 })
 const formRef = ref() // 表单 Ref
@@ -145,9 +148,11 @@ const resetForm = () => {
 /** 获得课程-类型树 */
 const getCourseTypeTree = async () => {
   courseTypeTree.value = []
-  const data = await CourseTypeApi.getCourseTypeList()
+  const data = await CourseTypeApi.getCourseTypeSimpleList()
+
+  const filteredData = data.filter(item => item.ctTypeNode === '0')
   const root: Tree = { id: 0, ctType: '课程类型', children: [] }
-  root.children = handleTree(data, 'id', 'ctParentId')
+  root.children = handleTree(filteredData, 'id', 'ctParentId')
   courseTypeTree.value.push(root)
 }
 </script>