|
@@ -0,0 +1,108 @@
|
|
|
+<template>
|
|
|
+ <div class="index">
|
|
|
+ <div class="text-center leading-80px">课程报名</div>
|
|
|
+ <van-form @submit="onSubmit">
|
|
|
+ <van-cell-group inset>
|
|
|
+ <van-field v-model="ruleForm.xsxx_xsxm" name="学生姓名" label="学生姓名" placeholder="学生姓名" :rules="[{ required: true, message: '请填写学生姓名' }]" />
|
|
|
+ <van-field v-model="ruleForm.xsxx_xsxh" name="学籍号" label="学籍号" placeholder="学籍号" :rules="[{ required: true, message: '请填写学籍号' }]" />
|
|
|
+ <van-field v-model="ruleForm.grade_name" is-link readonly name="picker" label="年级" placeholder="点击选择年级" @click="showGradePicker = true" :rules="[{ required: true, message: '请选择年级' }]" />
|
|
|
+ <van-popup v-model:show="showGradePicker" position="bottom">
|
|
|
+ <van-picker :columns="gradeData" :columns-field-names="customGradeFieldName" @confirm="onGradeConfirm" @cancel="showGradePicker = false" />
|
|
|
+ </van-popup>
|
|
|
+ <van-field v-model="ruleForm.class_name" is-link readonly name="picker" label="班级" placeholder="点击选择班级" @click="showClassPicker = true" :rules="[{ required: true, message: '请选择班级' }]" />
|
|
|
+ <van-popup v-model:show="showClassPicker" position="bottom">
|
|
|
+ <van-picker :columns="classData" :columns-field-names="customClassFieldName" @confirm="onClassConfirm" @cancel="showClassPicker = false" />
|
|
|
+ </van-popup>
|
|
|
+ </van-cell-group>
|
|
|
+ <div style="margin: 16px;">
|
|
|
+ <van-button round block type="primary" native-type="submit">
|
|
|
+ 提交
|
|
|
+ </van-button>
|
|
|
+ </div>
|
|
|
+ </van-form>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup>
|
|
|
+import { closeToast, showConfirmDialog, showFailToast, showSuccessToast } from 'vant'
|
|
|
+const router = useRouter();
|
|
|
+const route = router.currentRoute.value
|
|
|
+const xsxk_id = route.query.xsxk_id
|
|
|
+
|
|
|
+const ruleForm = $ref({
|
|
|
+ xsxk_id: "",
|
|
|
+ xsxx_xsxm: "",
|
|
|
+ xsxx_xsxh: "",
|
|
|
+ grade_id: "",
|
|
|
+ grade_name: "",
|
|
|
+ class_id: "",
|
|
|
+ class_name: ""
|
|
|
+})
|
|
|
+
|
|
|
+const onSubmit = async () => {
|
|
|
+ ruleForm.xsxk_id = xsxk_id;
|
|
|
+ let obj = {
|
|
|
+ xdjx_stxkgl_xktj_xkqk: ruleForm,
|
|
|
+ }
|
|
|
+ let { code } = await request({ url: '/xdjx/stxkgl_xktj_xkqk/add', data: obj });
|
|
|
+ if (code == 1) {
|
|
|
+ router.back();
|
|
|
+ showSuccessToast('保存成功');
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+let gradeData = $ref([]);
|
|
|
+initSelectData();
|
|
|
+async function initSelectData() {
|
|
|
+ let res = await request({ url: '/jcxx/grade/index', data: { limit: '999' } });
|
|
|
+ if (res.code == 1) {
|
|
|
+ gradeData = res.data.page_data;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+let showGradePicker = $ref(false);
|
|
|
+const customGradeFieldName = {
|
|
|
+ text: 'grade_name',
|
|
|
+ value: 'grade_id'
|
|
|
+};
|
|
|
+function onGradeConfirm({ selectedOptions }) {
|
|
|
+ ruleForm.grade_id = selectedOptions[0]?.grade_id;
|
|
|
+ ruleForm.grade_name = selectedOptions[0]?.grade_name;
|
|
|
+ showGradePicker = false;
|
|
|
+
|
|
|
+ if (ruleForm.grade_id) {
|
|
|
+ initClass();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+let classData = $ref([]);
|
|
|
+async function initClass() {
|
|
|
+ ruleForm.class_id = "";
|
|
|
+ ruleForm.class_name = "";
|
|
|
+ classData = [];
|
|
|
+
|
|
|
+ if (!ruleForm.grade_id)
|
|
|
+ return
|
|
|
+
|
|
|
+ let res = await request({ url: '/jcxx/class/index', data: { limit: '999', grade_id: ruleForm.grade_id } });
|
|
|
+ if (res.code == 1) {
|
|
|
+ classData = res.data.page_data;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+let showClassPicker = $ref(false);
|
|
|
+const customClassFieldName = {
|
|
|
+ text: 'class_name',
|
|
|
+ value: 'class_num'
|
|
|
+};
|
|
|
+function onClassConfirm({ selectedOptions }) {
|
|
|
+ ruleForm.class_id = selectedOptions[0]?.class_num;
|
|
|
+ ruleForm.class_name = selectedOptions[0]?.class_name;
|
|
|
+ showClassPicker = false;
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style>
|
|
|
+</style>
|