|
|
@@ -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>
|