|
|
@@ -11,7 +11,11 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item label="校区" prop="campusId" required>
|
|
|
<ie-select v-model="selectedCampus" :options="campusList" label-key="name" value-key="id" filterable
|
|
|
- class="w-[350px]!" />
|
|
|
+ class="w-[350px]!" @change="handleCampusChange" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="校区班级" prop="campusClassId">
|
|
|
+ <ie-select v-model="selectedCampusClass" :options="campusClassOptions" label-key="name" value-key="classId" filterable
|
|
|
+ clearable class="w-[350px]!" :disabled="!selectedCampus" />
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</IeModal>
|
|
|
@@ -22,7 +26,8 @@ import IeModal from '@/components/IeModal/index.vue';
|
|
|
import IeSelect from '@/components/IeSelect/index.vue';
|
|
|
|
|
|
import { associateCampus } from '@/api/dz/cards';
|
|
|
-import { getCurrentInstance, watchEffect } from 'vue';
|
|
|
+import { getClassesByCampusId } from '@/api/dz/classes';
|
|
|
+import { getCurrentInstance, watchEffect, ref } from 'vue';
|
|
|
|
|
|
const { proxy } = getCurrentInstance();
|
|
|
|
|
|
@@ -33,6 +38,9 @@ const {
|
|
|
getCampusList
|
|
|
} = useSchool({ autoLoad: false });
|
|
|
|
|
|
+const campusClassOptions = ref([]);
|
|
|
+const selectedCampusClass = ref(null);
|
|
|
+
|
|
|
const modalRef = ref(null);
|
|
|
const formRef = ref(null);
|
|
|
const form = ref({
|
|
|
@@ -54,8 +62,20 @@ const validateCardNoRange = (rule, value, callback) => {
|
|
|
watchEffect(() => {
|
|
|
form.value.cardNoRange = `${form.value.begin}-${form.value.end}`;
|
|
|
form.value.campusId = selectedCampus.value;
|
|
|
+ form.value.campusClassId = selectedCampusClass.value;
|
|
|
})
|
|
|
|
|
|
+/** 校区变化处理 */
|
|
|
+function handleCampusChange() {
|
|
|
+ selectedCampusClass.value = null;
|
|
|
+ campusClassOptions.value = [];
|
|
|
+ if (selectedCampus.value) {
|
|
|
+ getClassesByCampusId({ campusId: selectedCampus.value }).then(response => {
|
|
|
+ campusClassOptions.value = response.data || [];
|
|
|
+ });
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
const rules = ref({
|
|
|
cardNoRange: [
|
|
|
{ validator: validateCardNoRange, trigger: ['blur', 'change'] },
|
|
|
@@ -67,6 +87,8 @@ const rules = ref({
|
|
|
|
|
|
const handleBeforeClose = () => {
|
|
|
form.value = {};
|
|
|
+ selectedCampusClass.value = null;
|
|
|
+ campusClassOptions.value = [];
|
|
|
reset();
|
|
|
}
|
|
|
|
|
|
@@ -77,6 +99,8 @@ const open = () => {
|
|
|
modalRef.value.open()
|
|
|
}
|
|
|
const close = () => {
|
|
|
+ selectedCampusClass.value = null;
|
|
|
+ campusClassOptions.value = [];
|
|
|
reset();
|
|
|
modalRef.value.close()
|
|
|
}
|
|
|
@@ -85,7 +109,7 @@ const handleConfirm = () => {
|
|
|
formRef.value.validate(async (valid) => {
|
|
|
if (valid) {
|
|
|
modalRef.value.showLoading()
|
|
|
- associateCampus(form.value.begin, form.value.end, form.value.campusId).then(res => {
|
|
|
+ associateCampus(form.value.begin, form.value.end, form.value.campusId, form.value.campusClassId).then(res => {
|
|
|
proxy.$modal.msgSuccess('关联校区成功')
|
|
|
close();
|
|
|
setTimeout(() => {
|