Kaynağa Gözat

校区修改

jinxia.mo 1 gün önce
ebeveyn
işleme
b3f3ec92e5

+ 17 - 0
back-ui/src/api/dz/school.js

@@ -68,3 +68,20 @@ export function delSchool(id) {
     method: 'delete'
   })
 }
+
+// 校验学校名称是否唯一
+export function checkSchoolName(name, id) {
+  return request({
+    url: '/dz/school/checkSchoolName',
+    method: 'get',
+    params: { name, id }
+  })
+}
+
+// 获取所有学校列表(不分页)
+export function getAllSchool() {
+  return request({
+    url: '/dz/school/getAllSchool',
+    method: 'get'
+  })
+}

+ 48 - 23
back-ui/src/views/dz/school/index.vue

@@ -16,13 +16,21 @@
         <pane size="100">
           <el-col>
             <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
-              <el-form-item label="名称" prop="name">
-                <el-input
-                        v-model="queryParams.name"
-                        placeholder="请输入名称"
+              <el-form-item label="学校名称" prop="name">
+                <el-select
+                        v-model="queryParams.id"
+                        placeholder="请选择或输入学校名称"
+                        filterable
                         clearable
-                        @keyup.enter="handleQuery"
-                />
+                        style="width: 200px"
+                >
+                  <el-option
+                          v-for="school in allSchoolList"
+                          :key="school.id"
+                          :label="school.name"
+                          :value="school.id"
+                  />
+                </el-select>
               </el-form-item>
 <!--              <el-form-item label="省份" prop="location">-->
 <!--                <el-input-->
@@ -32,11 +40,9 @@
 <!--                        @keyup.enter="handleQuery"-->
 <!--                />-->
 <!--              </el-form-item>-->
-              <el-form-item label="省市区" prop="areaIds">
-                <AddressSelect class="w-[198px]" v-model="areaIds" />
-              </el-form-item>
+              
 
-              <el-form-item label="状态" prop="status">
+              <!-- <el-form-item label="状态" prop="status">
                 <el-select v-model="queryParams.status" placeholder="请选择状态" clearable style="width: 170px">
                   <el-option
                           v-for="dict in bool_values"
@@ -45,7 +51,7 @@
                           :value="dict.value"
                   />
                 </el-select>
-              </el-form-item>
+              </el-form-item> -->
               <el-form-item label="学校类型" prop="examTypes">
                 <el-select v-model="queryParams.examTypes" placeholder="请选择学校类型" clearable style="width: 170px">
                   <el-option
@@ -56,6 +62,9 @@
                   />
                 </el-select>
               </el-form-item>
+              <el-form-item label="省市区" prop="areaIds">
+                <AddressSelect class="w-[198px]" v-model="areaIds" />
+              </el-form-item>
               <el-form-item>
                 <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
                 <el-button icon="Refresh" @click="resetQuery">重置</el-button>
@@ -155,7 +164,7 @@
           <el-input v-model="form.location" placeholder="请输入省份" />
         </el-form-item> -->
         <el-form-item label="省市区" prop="areaIds">
-          <AddressSelect v-model="areaIds" style="width: 100%" />
+          <AddressSelect v-model="formAreaIds" style="width: 100%" />
         </el-form-item>
         
         <el-form-item label="学校类型" prop="examTypes">
@@ -193,7 +202,7 @@
 </template>
 
 <script setup name="School">
-  import { listSchool, getSchool, delSchool, addSchool, updateSchool, checkSchoolName } from "@/api/dz/school"
+  import { listSchool, getSchool, delSchool, addSchool, updateSchool, checkSchoolName, listAllSchool } from "@/api/dz/school"
   import { deptTreeSelect } from "@/api/system/user"
   import useAppStore from '@/store/modules/app'
   import { Splitpanes, Pane } from "splitpanes"
@@ -209,6 +218,7 @@
   const enabledDeptOptions = ref(undefined)
 
   const schoolList = ref([])
+  const allSchoolList = ref([]) // 所有学校列表(用于下拉选择)
   const open = ref(false)
   const loading = ref(true)
   const showSearch = ref(true)
@@ -219,7 +229,8 @@
   const title = ref("")
 
   const dataList = ref([]);
-  const areaIds = ref([]);
+  const areaIds = ref([]); // 筛选条件中的省市区
+  const formAreaIds = ref([]); // 表单对话框中的省市区
   let selectedIds = [];
 
   const schoolRef = ref(null);
@@ -230,6 +241,7 @@
     queryParams: {
       pageNum: 1,
       pageSize: 10,
+      id: null, // 学校ID(用于精确查询)
       name: null,
       deptId: null,
       location: null,
@@ -302,8 +314,13 @@
   function getList() {
     loading.value = true
     let areaObj = { pro: areaIds.value?.[0] || '', city: areaIds.value?.[1] || '', area: areaIds.value?.[2] || '' };
+    // 如果选择了学校ID,则根据ID精确查询,清空name参数
     let params = { ...proxy.addDateRange(queryParams.value), ...areaObj }
-    // listSchool(queryParams.value).then(response => {
+    if (params.id) {
+      params.name = null // 如果选择了ID,则不再使用name查询
+    } else {
+      params.id = null // 如果没有选择ID,则清空id参数
+    }
     listSchool(params).then(response => {
       schoolList.value = response.rows
       total.value = response.total
@@ -311,6 +328,13 @@
     })
   }
 
+  /** 加载所有学校列表(用于下拉选择) */
+  function loadAllSchoolList() {
+    listAllSchool({ pageNum: 1, pageSize: 9999 }).then(response => {
+      allSchoolList.value = response.data || []
+    })
+  }
+
   /** 通过条件过滤节点  */
   const filterNode = (value, data) => {
     if (!value) return true
@@ -381,8 +405,8 @@
       createTime: null,
       updateTime: null
     }
-    // 清空省市区选择
-    areaIds.value = []
+    // 清空表单中的省市区选择
+    formAreaIds.value = []
     if (schoolRef.value) {
       schoolRef.value.resetFields()
       schoolRef.value.clearValidate()
@@ -436,7 +460,7 @@
       } else if (!form.value.examTypes) {
         form.value.examTypes = []
       }
-      // 将省市区数据转换为 areaIds 数组格式,用于 AddressSelect 组件回显
+      // 将省市区数据转换为 formAreaIds 数组格式,用于 AddressSelect 组件回显
       // 按照顺序构建数组:[省, 市, 区],只包含有值的部分
       const areaArray = []
       if (form.value.pro) {
@@ -448,7 +472,7 @@
           }
         }
       }
-      areaIds.value = areaArray
+      formAreaIds.value = areaArray
       open.value = true
       title.value = "修改机构校区"
     })
@@ -458,11 +482,11 @@
   function submitForm() {
     schoolRef.value.validate(valid => {
       if (valid) {
-        // 构建省市区对象
+        // 构建省市区对象(使用表单中的 formAreaIds)
         let areaObj = {
-          pro: areaIds.value?.[0] || '',
-          city: areaIds.value?.[1] || '',
-          area: areaIds.value?.[2] || ''
+          pro: formAreaIds.value?.[0] || '',
+          city: formAreaIds.value?.[1] || '',
+          area: formAreaIds.value?.[2] || ''
         };
 
         // 处理 examTypes:如果是数组,转换为逗号分隔的字符串
@@ -534,6 +558,7 @@
 
   onMounted(() => {
     // getDeptTree()
+    loadAllSchoolList() // 加载所有学校列表
     getList()
   })
 </script>

+ 4 - 2
back-ui/src/views/dz/teacher/index.vue

@@ -20,7 +20,8 @@
       <el-form-item label="所在学校" prop="schoolId">
         <el-select
                 v-model="queryParams.schoolId"
-                placeholder="请选择所在学校"
+                placeholder="请选择或输入学校名称"
+                filterable
                 clearable
                 style="width: 240px"
                 @keyup.enter="handleQuery"
@@ -36,7 +37,8 @@
         <el-form-item label="培训校区" prop="campusId">
             <el-select
                     v-model="queryParams.campusId"
-                    placeholder="请选择培训校区"
+                    placeholder="请选择或输入校区名称"
+                    filterable
                     clearable
                     style="width: 240px"
                     @keyup.enter="handleQuery"

+ 10 - 2
ie-admin/src/main/java/com/ruoyi/web/controller/dz/DzSchoolController.java

@@ -7,7 +7,6 @@ import java.util.Objects;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import javax.servlet.http.HttpServletResponse;
-import javax.validation.ValidationException;
 
 import cn.hutool.core.collection.CollectionUtil;
 import com.ruoyi.common.core.domain.entity.SysUser;
@@ -16,7 +15,6 @@ import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.dz.domain.DzClasses;
 import com.ruoyi.dz.service.IDzClassesService;
-import com.ruoyi.dz.service.impl.DzClassesServiceImpl;
 import com.ruoyi.enums.UserTypeEnum;
 import com.ruoyi.system.domain.SysArea;
 import com.ruoyi.system.service.ISysAreaService;
@@ -139,6 +137,16 @@ public class DzSchoolController extends BaseController
         return AjaxResult.success(list);
     }
 
+    /**
+     * 获取所有学校列表(不分页)
+     */
+    @GetMapping("/getAllSchool")
+    public AjaxResult getAllSchool()
+    {
+        List<DzSchool> list = dzSchoolService.selectDzSchoolList(new DzSchool());
+        return AjaxResult.success(list);
+    }
+
     /**
      * 导出机构校区列表
      */