jinxia.mo 1 месяц назад
Родитель
Сommit
aedacfdb04

+ 9 - 0
back-ui/src/api/dz/classes.js

@@ -17,6 +17,15 @@ export function getClassesBySchoolId(query) {
   })
 }
 
+// 根据校区查询班级
+export function getClassesByCampusId(query) {
+  return request({
+    url: '/dz/classes/getClassesByCampusId',
+    method: 'get',
+    params: query
+  })
+}
+
 export function listAllClass(query) {
   return request({
     url: '/dz/classes/listAll',

+ 7 - 7
back-ui/src/views/dz/cards/index.vue

@@ -78,7 +78,7 @@
     </el-form>
 
     <el-row class="mt-2">
-      <CustomButton icon="plus" v-hasPermi="['dz:cards:add']" @click="handleAddCard">制卡</CustomButton>
+      <CustomButton icon="plus" v-hasPermi="['dz:cards:issue']" @click="handleAddCard">制卡</CustomButton>
       <CustomButton color="#67c23a" v-hasPermi="['dz:cards:assign']" @click="handleAssign">
         <svg-icon icon-class="peoples" class="mr-1" style="font-size: 12px" />
         分配卡
@@ -103,15 +103,15 @@
         <svg-icon icon-class="link" class="mr-1" style="font-size: 12px" />
         关联校区
       </CustomButton>
-      <CustomButton color="#00BCD4" v-hasPermi="['dz:cards:openFinished']" @click="handleOpenCard">
+      <!-- <CustomButton color="#00BCD4" v-hasPermi="['dz:cards:openFinished']" @click="handleOpenCard">
         <svg-icon icon-class="enter" class="mr-1" style="font-size: 12px" />
         直接开卡
-      </CustomButton>
-      <CustomButton icon="delete" color="#F56C6C" v-hasPermi="['dz:cards:remove']" :disabled="batchDisabled"
+      </CustomButton> -->
+      <!-- <CustomButton icon="delete" color="#F56C6C" v-hasPermi="['dz:cards:remove']" :disabled="batchDisabled"
         @click="handleDeleteBatch" v-if="false">
         删除
-      </CustomButton>
-      <CustomButton color="#FFC107" :disabled="batchDisabled" @click="handleSettle">
+      </CustomButton> -->
+      <CustomButton color="#FFC107" v-hasPermi="['dz:cards:settlement']"  :disabled="batchDisabled" @click="handleSettle">
         <svg-icon icon-class="chart" class="mr-1" style="font-size: 12px" />
         结算
       </CustomButton>
@@ -119,7 +119,7 @@
         <svg-icon icon-class="time" class="mr-1" style="font-size: 14px" />
         续期
       </CustomButton> -->
-      <CustomButton color="#673AB7" :disabled="editDisabled" @click="handleEdit">
+      <CustomButton color="#673AB7" v-hasPermi="['dz:cards:updateuser']"  :disabled="editDisabled" @click="handleEdit">
         <svg-icon icon-class="edit" class="mr-1" style="font-size: 12px" />
         修改
       </CustomButton>

+ 19 - 15
back-ui/src/views/dz/teacher/index.vue

@@ -122,8 +122,8 @@
       </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template #default="scope">
-          <el-button link type="primary" icon="" @click="handleUpdateTeacherClass(scope.row)" v-hasPermi="['dz:teacher:edit']">学校班级</el-button>
-          <el-button link type="primary" icon="" @click="handleUpdateCampusClass(scope.row)" v-hasPermi="['dz:teacher:edit']">校区班级</el-button>
+          <!-- <el-button link type="primary" icon="" @click="handleUpdateTeacherClass(scope.row)" v-hasPermi="['dz:teacher:edit']">学校班级</el-button> -->
+          <!-- <el-button link type="primary" icon="" @click="handleUpdateCampusClass(scope.row)" v-hasPermi="['dz:teacher:edit']">校区班级</el-button> -->
           <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['dz:teacher:edit']">修改</el-button>
           <!-- <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['dz:teacher:remove']">删除</el-button> -->
         </template>
@@ -229,7 +229,7 @@
       </el-dialog>
 
       <!-- 关联校区班级 -->
-      <el-dialog :title="titleCampusClass" v-model="openCampusClass" width="500px" append-to-body>
+      <!-- <el-dialog :title="titleCampusClass" v-model="openCampusClass" width="500px" append-to-body>
           <el-form ref="campusClassRef" :model="formCampusClass" :rules="rulesCampusClass" label-width="80px">
               <el-form-item label="教师姓名" prop="name">
                   <el-input v-model="formCampusClass.name" placeholder="请输入教师姓名" disabled/>
@@ -272,7 +272,7 @@
                   <el-button @click="cancelCampusClass">取 消</el-button>
               </div>
           </template>
-      </el-dialog>
+      </el-dialog> -->
   </div>
 </template>
 
@@ -280,7 +280,7 @@
 import { listTeacher, getTeacher, delTeacher, addTeacher, updateTeacher } from "@/api/dz/teacher"
 import {listAllSchool} from "@/api/dz/school"
 import {listCampus} from "@/api/dz/campus"
-import { listAllClass, getClassesBySchoolId } from "@/api/dz/classes"
+import { listAllClass, getClassesBySchoolId, getClassesByCampusId } from "@/api/dz/classes"
 import { batchBindTeacherClass,listAllTeacherClass } from "@/api/dz/teacherclass"
 import {getCampusSchoolList} from "@/api/dz/cards.js";
 import { changeUserStatus } from "@/api/system/user"
@@ -478,7 +478,7 @@ function handleUpdate(row) {
     
     if (form.value.campusId) {
       loadPromises.push(
-        getClassesBySchoolId({ campusId: form.value.campusId }).then(response => {
+        getClassesByCampusId({ campusId: form.value.campusId }).then(response => {
           campusClassOptions.value = response.data || []
         })
       )
@@ -497,20 +497,24 @@ function handleUpdate(row) {
         if (tc.classId) {
           // 检查该班级是否属于学校
           const schoolClass = schoolClassOptions.value.find(c => c.classId === tc.classId)
-          if (schoolClass) {
+          if (schoolClass && form.value.schoolId && schoolClass.schoolId === form.value.schoolId) {
             if (!form.value.schoolClassIds) {
               form.value.schoolClassIds = []
             }
-            form.value.schoolClassIds.push(tc.classId)
+            if (!form.value.schoolClassIds.includes(tc.classId)) {
+              form.value.schoolClassIds.push(tc.classId)
+            }
           }
           
-          // 检查该班级是否属于校区
+          // 检查该班级是否属于校区(校区班级的schoolId等于campusId)
           const campusClass = campusClassOptions.value.find(c => c.classId === tc.classId)
-          if (campusClass) {
+          if (campusClass && form.value.campusId && campusClass.schoolId === form.value.campusId) {
             if (!form.value.campusClassIds) {
               form.value.campusClassIds = []
             }
-            form.value.campusClassIds.push(tc.classId)
+            if (!form.value.campusClassIds.includes(tc.classId)) {
+              form.value.campusClassIds.push(tc.classId)
+            }
           }
         }
       })
@@ -547,7 +551,7 @@ function handleCampusChange() {
   }
   campusClassOptions.value = []
   if (form.value.campusId) {
-    getClassesBySchoolId({ campusId: form.value.campusId }).then(response => {
+    getClassesByCampusId({ campusId: form.value.campusId }).then(response => {
       campusClassOptions.value = response.data || []
       // 如果是编辑模式,需要重新匹配已关联的班级
       if (form.value.teacherId) {
@@ -573,7 +577,7 @@ function loadTeacherClassesForEdit() {
       if (tc.classId) {
         // 检查该班级是否属于学校
         const schoolClass = schoolClassOptions.value.find(c => c.classId === tc.classId)
-        if (schoolClass) {
+        if (schoolClass && form.value.schoolId && schoolClass.schoolId === form.value.schoolId) {
           if (!form.value.schoolClassIds) {
             form.value.schoolClassIds = []
           }
@@ -582,9 +586,9 @@ function loadTeacherClassesForEdit() {
           }
         }
         
-        // 检查该班级是否属于校区
+        // 检查该班级是否属于校区(校区班级的schoolId等于campusId)
         const campusClass = campusClassOptions.value.find(c => c.classId === tc.classId)
-        if (campusClass) {
+        if (campusClass && form.value.campusId && campusClass.schoolId === form.value.campusId) {
           if (!form.value.campusClassIds) {
             form.value.campusClassIds = []
           }

+ 8 - 1
ie-admin/src/main/java/com/ruoyi/web/controller/dz/DzClassesController.java

@@ -90,12 +90,19 @@ public class DzClassesController extends BaseController
     }
 
     @GetMapping("/getClassesBySchoolId")
-    public AjaxResult getClassesBySchoolId(@Param("schoolId") Long schoolId)
+    public AjaxResult getClassesBySchoolId(@RequestParam("schoolId") Long schoolId)
     {
         List<DzClasses> list = dzClassesService.selectDzClassesListBySchoolId(schoolId);
         return AjaxResult.success(list);
     }
 
+    @GetMapping("/getClassesByCampusId")
+    public AjaxResult getClassesByCampusId(@RequestParam("campusId") Long campusId)
+    {
+        List<DzClasses> list = dzClassesService.selectDzClassesListByCampusId(campusId);
+        return AjaxResult.success(list);
+    }
+
     /**
      * 导出学生班级列表
      */

+ 23 - 11
ie-admin/src/main/java/com/ruoyi/web/controller/dz/DzTeacherController.java

@@ -108,7 +108,13 @@ public class DzTeacherController extends BaseController
     {
         Long teacherId = dzTeacherService.insertDzTeacher(dzTeacher);
 
-        // 处理班级关联
+        processTeacherClass(dzTeacher);
+
+        return AjaxResult.success(teacherId);
+    }
+
+    private void processTeacherClass(DzTeacher dzTeacher) {
+        Long teacherId = dzTeacher.getTeacherId();
         if (teacherId != null) {
             // 合并学校班级和校区班级ID
             List<Long> schoolClassIds = Arrays.asList(dzTeacher.getSchoolClassIds());
@@ -116,26 +122,30 @@ public class DzTeacherController extends BaseController
 
             // 如果有学校班级ID,则关联班级
             if (!schoolClassIds.isEmpty()) {
-                DzTeacherClass dzTeacherClass = new DzTeacherClass();
-                dzTeacherClass.setTeacherId(teacherId);
-                dzTeacherClass.setClassIds(schoolClassIds.toArray(new Long[0]));
-                dzTeacherClass.setSchoolId(dzTeacher.getSchoolId());
-                dzTeacherClassService.batchBindTeacherClass(dzTeacherClass);
-            }
+                processTeacherClass(teacherId, dzTeacher.getSchoolId(), schoolClassIds);
+            }   
             // 如果有校区班级ID,则关联班级
             if (!campusClassIds.isEmpty()) {
+                processTeacherClass(teacherId, dzTeacher.getSchoolId(), campusClassIds);
+            }
+        }
+    }
+
+    private void processTeacherClass(Long teacherId,Long schoolId, List<Long> schoolClassIds) {
+        if (teacherId != null) {
+            // 如果有学校班级ID,则关联班级
+            if (!schoolClassIds.isEmpty()) {
                 DzTeacherClass dzTeacherClass = new DzTeacherClass();
                 dzTeacherClass.setTeacherId(teacherId);
-                dzTeacherClass.setClassIds(campusClassIds.toArray(new Long[0]));
-                dzTeacherClass.setSchoolId(dzTeacher.getSchoolId());
+                dzTeacherClass.setClassIds(schoolClassIds.toArray(new Long[0]));
+                dzTeacherClass.setSchoolId(schoolId);
                 dzTeacherClassService.batchBindTeacherClass(dzTeacherClass);
             }
         }
-
-        return AjaxResult.success(teacherId);
     }
 
 
+
     /**
      * 修改老师
      */
@@ -150,6 +160,8 @@ public class DzTeacherController extends BaseController
             dzTeacher.setSchoolId(null);
         }
         dzTeacherService.updateDzTeacher(dzTeacher);
+        //处理班级关联
+        processTeacherClass(dzTeacher);
         //同时修改sys_user表的nickName
         SysUser user = userService.selectUserByUserName(String.valueOf(dzTeacher.getTeacherId()));
         if (null != user) {

+ 1 - 0
ie-system/src/main/java/com/ruoyi/dz/dto/CardStatisticsDTO.java

@@ -132,3 +132,4 @@ public class CardStatisticsDTO implements Serializable
 }
 
 
+

+ 1 - 0
ie-system/src/main/java/com/ruoyi/dz/mapper/DzClassesMapper.java

@@ -23,6 +23,7 @@ public interface DzClassesMapper
     public List<DzClasses> selectClassesByIds(@Param("ids") Collection<Long> ids);
     public List<DzClasses> selectClassesForTeacher(@Param("teacherId") Long teacherId);
     public List<DzClasses> selectDzClassesListBySchoolId(@Param("schoolId") Long schoolId);
+    public List<DzClasses> selectDzClassesListByCampusId(@Param("campusId") Long campusId);
     public List<DzClasses> selectDzClassesBySchoolIds(@Param("schoolIds") Collection<Long> schoolIds);
     /**
      * 查询学生班级

+ 1 - 0
ie-system/src/main/java/com/ruoyi/dz/service/IDzClassesService.java

@@ -28,6 +28,7 @@ public interface IDzClassesService
      */
     public List<DzClasses> selectDzClassesList(DzClasses dzClasses);
     public List<DzClasses> selectDzClassesListBySchoolId(Long schoolId);
+    public List<DzClasses> selectDzClassesListByCampusId(Long campusId);
     public List<DzClasses> selectDzClassesBySchoolIds(Collection<Long> schoolIds);
     public List<DzClasses> selectDzClassesListByIds(Collection<Long> classIds);
 

+ 6 - 0
ie-system/src/main/java/com/ruoyi/dz/service/impl/DzClassesServiceImpl.java

@@ -51,6 +51,12 @@ public class DzClassesServiceImpl implements IDzClassesService
         return dzClassesMapper.selectDzClassesListBySchoolId(schoolId);
     }
 
+    @Override
+    public List<DzClasses> selectDzClassesListByCampusId(Long campusId)
+    {
+        return dzClassesMapper.selectDzClassesListByCampusId(campusId);
+    }
+
     @Override
     public List<DzClasses> selectDzClassesBySchoolIds(Collection<Long> schoolIds)
     {

+ 1 - 0
ie-system/src/main/java/com/ruoyi/enums/StatisticsType.java

@@ -20,3 +20,4 @@ public enum StatisticsType {
 }
 
 
+

+ 5 - 0
ie-system/src/main/resources/mapper/dz/DzClassesMapper.xml

@@ -142,6 +142,11 @@
         where t1.school_id = #{schoolId}
     </select>
 
+    <select id="selectDzClassesListByCampusId" resultMap="DzClassesResult">
+        select * from dz_classes t1
+        where t1.school_id = #{campusId}
+    </select>
+
     <select id="selectDzClassesBySchoolIds" resultMap="DzClassesResult">
         <include refid="selectDzClassesVo"/>
         where t1.school_id in