diff --git a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseMergeSchoolClass.java b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseMergeSchoolClass.java
index f370e667..1fa77bbe 100644
--- a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseMergeSchoolClass.java
+++ b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseMergeSchoolClass.java
@@ -44,6 +44,13 @@ public class TeacherOpenCourseMergeSchoolClass extends BaseEntity{
     @InsertIgnore
     private TeacherOpenCourseInfo teacherOpenCourse;
 
+    @FetchSql("select ta.teacher_name " +
+            "from teacher_open_course_merge_teacher t left join teacher ta on ta.teacher_id = t.teacher_id " +
+            "where t.teacher_open_course_merge_teacher_status = 1 and ta.teacher_status = 1 and t.teacher_open_course_id = #teacherOpenCourseId# ")
+    @UpdateIgnore
+    @InsertIgnore
+    private String teacherIdText;
+
     @Data
     @Accessors(chain = true)
     public static class TeacherOpenCourseInfo {
@@ -180,4 +187,12 @@ public class TeacherOpenCourseMergeSchoolClass extends BaseEntity{
         this.teacherOpenCourse = teacherOpenCourse;
     }
 
+    public String getTeacherIdText() {
+        return teacherIdText;
+    }
+
+    public void setTeacherIdText(String teacherIdText) {
+        this.teacherIdText = teacherIdText;
+    }
+
 }
diff --git a/web/src/main/java/com/ibeetl/jlw/web/HandsOnController.java b/web/src/main/java/com/ibeetl/jlw/web/HandsOnController.java
index 64ebee7e..eb6164d5 100644
--- a/web/src/main/java/com/ibeetl/jlw/web/HandsOnController.java
+++ b/web/src/main/java/com/ibeetl/jlw/web/HandsOnController.java
@@ -1,5 +1,6 @@
 package com.ibeetl.jlw.web;
 
+import cn.hutool.json.JSONUtil;
 import cn.jlw.Interceptor.SCoreUser;
 import cn.jlw.validate.ValidateConfig;
 import com.ibeetl.admin.core.annotation.Function;
@@ -26,8 +27,10 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.servlet.ModelAndView;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * HandsOn 课程实操 接口
@@ -140,6 +143,134 @@ public class HandsOnController{
         return JsonResult.success(page);
     }
 
+    @PostMapping(MODEL + "/listMock.json")
+    @Function("handsOn.query")
+    public JsonResult<PageQuery> listMock(HandsOnQuery condition){
+        PageQuery page = condition.getPageQuery();
+        handsOnService.queryByCondition(page);
+        ArrayList list = new ArrayList();
+        String jr = "[\n" +
+                "    {\n" +
+                "        \"courseInfoId\": \"金融工程\",\n" +
+                "        \"courseChildNode\": \"金融工程-V1-现金流的时间价值\",\n" +
+                "        \"handsOnName\": \"现金流的时间价值实训案例\",\n" +
+                "        \"http\": \"http://www.905.cn/server/filesystem/temp/金融工程视频/金融工程-V1-现金流的时间价值.mp4\",\n" +
+                "        \"handsOnStatus\": \"1\",\n" +
+                "        \"addTime\": \"2022-10-20 15:21:00\"\n" +
+                "    },\n" +
+                "    {\n" +
+                "        \"courseInfoId\": \"金融工程\",\n" +
+                "        \"courseChildNode\": \"金融工程-V2-固定收益证券\",\n" +
+                "        \"handsOnName\": \"固定收益证券实训案例\",\n" +
+                "        \"http\": \"http://www.905.cn/server/filesystem/temp/金融工程视频/金融工程-V2-固定收益证券.mp4\",\n" +
+                "        \"handsOnStatus\": \"1\",\n" +
+                "        \"addTime\": \"2022-10-20 15:21:01\"\n" +
+                "    },\n" +
+                "    {\n" +
+                "        \"courseInfoId\": \"金融工程\",\n" +
+                "        \"courseChildNode\": \"金融工程-V3-权证与期权\",\n" +
+                "        \"handsOnName\": \"权证与期权实训案例\",\n" +
+                "        \"http\": \"http://www.905.cn/server/filesystem/temp/金融工程视频/金融工程-V3-权证与期权.mp4\",\n" +
+                "        \"handsOnStatus\": \"1\",\n" +
+                "        \"addTime\": \"2022-10-20 15:21:01\"\n" +
+                "    },\n" +
+                "    {\n" +
+                "        \"courseInfoId\": \"金融工程\",\n" +
+                "        \"courseChildNode\": \"金融工程-V4-远期与期货交易\",\n" +
+                "        \"handsOnName\": \"远期与期货交易实训案例\",\n" +
+                "        \"http\": \"http://www.905.cn/server/filesystem/temp/金融工程视频/金融工程-V4-远期与期货交易.mp4\",\n" +
+                "        \"handsOnStatus\": \"1\",\n" +
+                "        \"addTime\": \"2022-10-20 15:21:02\"\n" +
+                "    },\n" +
+                "    {\n" +
+                "        \"courseInfoId\": \"金融工程\",\n" +
+                "        \"courseChildNode\": \"金融工程-V5-金融互换\",\n" +
+                "        \"handsOnName\": \"金融互换实训案例\",\n" +
+                "        \"http\": \"http://www.905.cn/server/filesystem/temp/金融工程视频/金融工程-V5-金融互换.mp4\",\n" +
+                "        \"handsOnStatus\": \"1\",\n" +
+                "        \"addTime\": \"2022-10-20 15:21:02\"\n" +
+                "    },\n" +
+                "    {\n" +
+                "        \"courseInfoId\": \"金融工程\",\n" +
+                "        \"courseChildNode\": \"金融工程-V6-在险价值\",\n" +
+                "        \"handsOnName\": \"在险价值实训案例\",\n" +
+                "        \"http\": \"http://www.905.cn/server/filesystem/temp/金融工程视频/金融工程-V6-在险价值.mp4\",\n" +
+                "        \"handsOnStatus\": \"1\",\n" +
+                "        \"addTime\": \"2022-10-20 15:21:02\"\n" +
+                "    }\n" +
+                "]";
+        String lh = "[{\n" +
+                "        \"courseInfoId\": \"量化投资\",\n" +
+                "        \"courseChildNode\": \"量化投资-V1-趋势交易\",\n" +
+                "        \"handsOnName\": \"趋势交易实训案例\",\n" +
+                "        \"http\": \"http://www.905.cn/server/filesystem/temp/量化投资视频/量化投资-V1-趋势交易.mp4\",\n" +
+                "        \"handsOnStatus\": \"1\",\n" +
+                "        \"addTime\": \"2022-10-20 15:21:00\"\n" +
+                "    },\n" +
+                "    {\n" +
+                "        \"courseInfoId\": \"量化投资\",\n" +
+                "        \"courseChildNode\": \"量化投资-V2-多因子模型\",\n" +
+                "        \"handsOnName\": \"多因子模型实训案例\",\n" +
+                "        \"http\": \"http://www.905.cn/server/filesystem/temp/量化投资视频/量化投资-V2-多因子模型.mp4\",\n" +
+                "        \"handsOnStatus\": \"1\",\n" +
+                "        \"addTime\": \"2022-10-20 15:21:00\"\n" +
+                "    },\n" +
+                "    {\n" +
+                "        \"courseInfoId\": \"量化投资\",\n" +
+                "        \"courseChildNode\": \"量化投资-V3-股票择时策略\",\n" +
+                "        \"handsOnName\": \"股票择时策略实训案例\",\n" +
+                "        \"http\": \"http://www.905.cn/server/filesystem/temp/量化投资视频/量化投资-V3-股票择时策略.mp4\",\n" +
+                "        \"handsOnStatus\": \"1\",\n" +
+                "        \"addTime\": \"2022-10-20 15:21:00\"\n" +
+                "    },\n" +
+                "    {\n" +
+                "        \"courseInfoId\": \"量化投资\",\n" +
+                "        \"courseChildNode\": \"量化投资-V4-EMA波动策略.mp4\",\n" +
+                "        \"handsOnName\": \"EMA波动策略实训案例\",\n" +
+                "        \"http\": \"http://www.905.cn/server/filesystem/temp/量化投资视频/量化投资-V4-EMA波动策略.mp4\",\n" +
+                "        \"handsOnStatus\": \"1\",\n" +
+                "        \"addTime\": \"2022-10-20 15:21:00\"\n" +
+                "    },\n" +
+                "    {\n" +
+                "        \"courseInfoId\": \"量化投资\",\n" +
+                "        \"courseChildNode\": \"量化投资-V5-跨品种套利交易策略\",\n" +
+                "        \"handsOnName\": \"跨品种套利交易策略实训案例\",\n" +
+                "        \"http\": \"http://www.905.cn/server/filesystem/temp/量化投资视频/量化投资-V5-跨品种套利交易策略.mp4\",\n" +
+                "        \"handsOnStatus\": \"1\",\n" +
+                "        \"addTime\": \"2022-10-20 15:21:04\"\n" +
+                "    },\n" +
+                "    {\n" +
+                "        \"courseInfoId\": \"量化投资\",\n" +
+                "        \"courseChildNode\": \"量化投资-V6-神经网络交易策略\",\n" +
+                "        \"handsOnName\": \"神经网络交易策略实训案例\",\n" +
+                "        \"http\": \"http://www.905.cn/server/filesystem/temp/量化投资视频/量化投资-V6-神经网络交易策略.mp4\",\n" +
+                "        \"handsOnStatus\": \"1\",\n" +
+                "        \"addTime\": \"2022-10-20 15:21:04\"\n" +
+                "    },\n" +
+                "    {\n" +
+                "        \"courseInfoId\": \"量化投资\",\n" +
+                "        \"courseChildNode\": \"量化投资-V7-动量反转策略\",\n" +
+                "        \"handsOnName\": \"动量反转策略实训案例\",\n" +
+                "        \"http\": \"http://www.905.cn/server/filesystem/temp/量化投资视频/量化投资-V7-动量反转策略.mp4\",\n" +
+                "        \"handsOnStatus\": \"1\",\n" +
+                "        \"addTime\": \"2022-10-20 15:21:04\"\n" +
+                "    },\n" +
+                "    {\n" +
+                "        \"courseInfoId\": \"量化投资\",\n" +
+                "        \"courseChildNode\": \"量化投资-V8-基于ACD逻辑高频交易策略\",\n" +
+                "        \"handsOnName\": \"基于ACD逻辑高频交易策略实训案例\",\n" +
+                "        \"http\": \"http://www.905.cn/server/filesystem/temp/量化投资视频/量化投资-V8-基于ACD逻辑高频交易策略.mp4\",\n" +
+                "        \"handsOnStatus\": \"1\",\n" +
+                "        \"addTime\": \"2022-10-20 15:21:04\"\n" +
+                "    }\n" +
+                "]";
+
+        list.addAll(JSONUtil.toList(lh, Map.class));
+        list.addAll(JSONUtil.toList(jr, Map.class));
+        page.setList(list);
+        return JsonResult.success(page);
+    }
+
     @PostMapping(MODEL + "/addAll.json")
     @Function("handsOn.add")
     public JsonResult addAll(HandsOnQuery handsOnQuery,@SCoreUser CoreUser coreUser){
diff --git a/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseMergeSchoolClassQuery.java b/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseMergeSchoolClassQuery.java
index 9f7a2f74..1c8a1e4d 100644
--- a/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseMergeSchoolClassQuery.java
+++ b/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseMergeSchoolClassQuery.java
@@ -35,6 +35,8 @@ public class TeacherOpenCourseMergeSchoolClassQuery extends PageParam {
     private String orgIdPlural;
     private String userIdPlural;
 
+    private String teacherOpenCourseTitle;
+
     private String teacherOpenCourseMergeSchoolClassJsonStr;//json格式
 
     private String _given;//指定更新的特定字段,多个逗号隔开
@@ -142,4 +144,12 @@ public class TeacherOpenCourseMergeSchoolClassQuery extends PageParam {
     public void set_given(String _given) {
         this._given = _given;
     }
+
+    public String getTeacherOpenCourseTitle() {
+        return teacherOpenCourseTitle;
+    }
+
+    public void setTeacherOpenCourseTitle(String teacherOpenCourseTitle) {
+        this.teacherOpenCourseTitle = teacherOpenCourseTitle;
+    }
 }
diff --git a/web/src/main/resources/application-prod.properties b/web/src/main/resources/application-prod.properties
index 9f2c8e3d..54a8e5e0 100644
--- a/web/src/main/resources/application-prod.properties
+++ b/web/src/main/resources/application-prod.properties
@@ -66,4 +66,4 @@ dynamic.beetlsql.cs.dbStyle = org.beetl.sql.core.db.MySqlStyle
 dynamic.beetlsql.cs.dynamicConnectionSource = master,ds2
 
 #\u6559\u5E08\u7AEF\u548C\u5B66\u751F\u7AEF\u7684\u767B\u5F55\u5730\u5740
-student.teacher.url = http://116.205.131.177:9090/
\ No newline at end of file
+student.teacher.url = http://116.205.131.177:8080/
\ No newline at end of file
diff --git a/web/src/main/resources/sql/jlw/teacherOpenCourseMergeSchoolClass.md b/web/src/main/resources/sql/jlw/teacherOpenCourseMergeSchoolClass.md
index 6ce0a990..c36ec6f1 100644
--- a/web/src/main/resources/sql/jlw/teacherOpenCourseMergeSchoolClass.md
+++ b/web/src/main/resources/sql/jlw/teacherOpenCourseMergeSchoolClass.md
@@ -7,6 +7,7 @@ queryByCondition
   t.*
   @}
   from teacher_open_course_merge_school_class t
+  left join teacher_open_course ta on ta.teacher_open_course_id = t.teacher_open_course_id
   where 1=1  
   @//数据权限,该sql语句功能点,如果不考虑数据权限,可以删除此行  
   and #function("teacherOpenCourseMergeSchoolClass.query")#
@@ -49,6 +50,9 @@ queryByCondition
   @if(!isEmpty(userIdPlural)){
   and find_in_set(t.user_id,#userIdPlural#)
   @}
+  @if(!isEmpty(teacherOpenCourseTitle)){
+  and ta.teacher_open_course_title like #'%'+teacherOpenCourseTitle+'%'#
+  @}
 
 
 queryByConditionQuery
@@ -60,6 +64,7 @@ queryByConditionQuery
   t.*
   @}
   from teacher_open_course_merge_school_class t
+  left join teacher_open_course ta on ta.teacher_open_course_id = t.teacher_open_course_id
   where 1=1  
   @if(!isEmpty(teacherOpenCourseMergeSchoolClassId)){
   and t.teacher_open_course_merge_school_class_id =#teacherOpenCourseMergeSchoolClassId#
@@ -100,6 +105,9 @@ queryByConditionQuery
   @if(!isEmpty(userIdPlural)){
   and find_in_set(t.user_id,#userIdPlural#)
   @}
+  @if(!isEmpty(teacherOpenCourseTitle)){
+  and ta.teacher_open_course_title like #'%'+teacherOpenCourseTitle+'%'#
+  @}
 
 
 
diff --git a/web/src/main/resources/static/js/jlw/handsOn/index.js b/web/src/main/resources/static/js/jlw/handsOn/index.js
index 72038a0a..7ead3ad9 100644
--- a/web/src/main/resources/static/js/jlw/handsOn/index.js
+++ b/web/src/main/resources/static/js/jlw/handsOn/index.js
@@ -27,7 +27,8 @@ layui.define(['form', 'laydate', 'table'], function (exports) {
                 cellMinWidth: 120,
                 method: 'post',
                 even: true,
-                url: Common.ctxPath + '/jlw/handsOn/list.json' // 数据接口
+                // url: Common.ctxPath + '/jlw/handsOn/list.json' // 数据接口
+                url: Common.ctxPath + '/jlw/handsOn/listMock.json' // 数据接口
                 , page: Lib.tablePage // 开启分页
                 /*, toolbar: '#toolbar_handsOn' //自定义头部左侧工具栏
                 , defaultToolbar: ['filter', 'print', 'exports'] //头部右侧工具栏*/
@@ -43,11 +44,11 @@ layui.define(['form', 'laydate', 'table'], function (exports) {
                         hideField: false,
                         hide: $.isEmpty(sx_['handsOnName']) ? false : sx_['handsOnName'],
                     }, {
-                        field: 'courseInfoParentName',
+                        field: 'courseInfoId',
                         title: '归属课程', align: "center"
                     },
                     {
-                        field: 'courseInfoName',
+                        field: 'courseChildNode',
                         title: '归属章节', align: "center"
                     }, {
                         field: 'addTime',