From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目

---
 src/views/infra/demo/demo03/normal/components/Demo03GradeForm.vue |   72 ++++++++++++++++++++++++++++++++++++
 1 files changed, 72 insertions(+), 0 deletions(-)

diff --git a/src/views/infra/demo/demo03/normal/components/Demo03GradeForm.vue b/src/views/infra/demo/demo03/normal/components/Demo03GradeForm.vue
new file mode 100644
index 0000000..df64a7f
--- /dev/null
+++ b/src/views/infra/demo/demo03/normal/components/Demo03GradeForm.vue
@@ -0,0 +1,72 @@
+<template>
+  <el-form
+    ref="formRef"
+    :model="formData"
+    :rules="formRules"
+    label-width="100px"
+    v-loading="formLoading"
+  >
+    <el-form-item label="鍚嶅瓧" prop="name">
+      <el-input v-model="formData.name" placeholder="璇疯緭鍏ュ悕瀛�" />
+    </el-form-item>
+    <el-form-item label="鐝富浠�" prop="teacher">
+      <el-input v-model="formData.teacher" placeholder="璇疯緭鍏ョ彮涓讳换" />
+    </el-form-item>
+  </el-form>
+</template>
+<script setup lang="ts">
+import { Demo03StudentApi } from '@/api/infra/demo/demo03/normal'
+
+const props = defineProps<{
+  studentId: number // 瀛︾敓缂栧彿锛堜富琛ㄧ殑鍏宠仈瀛楁锛�
+}>()
+const formLoading = ref(false) // 琛ㄥ崟鐨勫姞杞戒腑
+const formData = ref({})
+const formRules = reactive({
+  studentId: [{ required: true, message: '瀛︾敓缂栧彿涓嶈兘涓虹┖', trigger: 'blur' }],
+  name: [{ required: true, message: '鍚嶅瓧涓嶈兘涓虹┖', trigger: 'blur' }],
+  teacher: [{ required: true, message: '鐝富浠讳笉鑳戒负绌�', trigger: 'blur' }],
+})
+const formRef = ref() // 琛ㄥ崟 Ref
+
+/** 鐩戝惉涓昏〃鐨勫叧鑱斿瓧娈电殑鍙樺寲锛屽姞杞藉搴旂殑瀛愯〃鏁版嵁 */
+watch(
+  () => props.studentId,
+  async (val) => {
+    // 1. 閲嶇疆琛ㄥ崟
+    formData.value = {
+      id: undefined,
+      studentId: undefined,
+      name: undefined,
+      teacher: undefined
+    }
+    // 2. val 闈炵┖锛屽垯鍔犺浇鏁版嵁
+    if (!val) {
+      return
+    }
+    try {
+      formLoading.value = true
+      const data = await Demo03StudentApi.getDemo03GradeByStudentId(val)
+      if (!data) {
+        return
+      }
+      formData.value = data
+    } finally {
+      formLoading.value = false
+    }
+  },
+  { immediate: true }
+)
+
+/** 琛ㄥ崟鏍¢獙 */
+const validate = () => {
+  return formRef.value.validate()
+}
+
+/** 琛ㄥ崟鍊� */
+const getData = () => {
+  return formData.value
+}
+
+defineExpose({ validate, getData })
+</script>

--
Gitblit v1.8.0