|
|
@@ -0,0 +1,83 @@
|
|
|
+<!-- 注册页面 -->
|
|
|
+ <!-- 姓名 密码 重复密码 南大官邮 验证码 南大学号 角色(选择卡) -->
|
|
|
+ <!-- TODO:验证码 美化 后端提交 -->
|
|
|
+ <template>
|
|
|
+ <form @submit.prevent="register">
|
|
|
+ <div>
|
|
|
+ <label for="role">账号属性:</label>
|
|
|
+ <select id="role" v-model="formData.role">
|
|
|
+ <option value="student">学生</option>
|
|
|
+ <option value="teacher">教师</option>
|
|
|
+ </select>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <label for="name">姓名:</label>
|
|
|
+ <input type="text" id="name" v-model="formData.name" required />
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <label for="password">密码:</label>
|
|
|
+ <input type="password" id="password" v-model="formData.password" required />
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <label for="confirmPassword">重复密码:</label>
|
|
|
+ <input type="password" id="confirmPassword" v-model="formData.confirmPassword" required />
|
|
|
+ <span v-if="!isPasswordMatch" style="color: red;">两次密码不匹配</span>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <label for="email">南大官邮(必填):</label>
|
|
|
+ <input type="email" id="email" v-model="formData.email" required placeholder="xxx@smail.nju.edu.cn" pattern="[^@]+@smail.nju.edu.cn" title="邮箱格式应为xxx@smail.nju.edu.cn" />
|
|
|
+ <small>格式:xxx@smail.nju.edu.cn</small>
|
|
|
+ </div>
|
|
|
+ <!-- TODO: 验证码功能暂时未实现 UserController.java-->
|
|
|
+ <div>
|
|
|
+ <label for="captcha">验证码:</label>
|
|
|
+ <input type="text" id="captcha" v-model="formData.captcha" required />
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <label for="studentId">南大学号/工号:</label>
|
|
|
+ <input type="text" id="studentId" v-model="formData.studentId" required />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <button type="submit" :disabled="!isPasswordMatch">注册</button>
|
|
|
+ </form>
|
|
|
+ </template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import { ref, computed, reactive, defineProps } from 'vue';
|
|
|
+
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: 'RegistrationForm',
|
|
|
+ setup() {
|
|
|
+ const formData = ref({
|
|
|
+ name: '',
|
|
|
+ password: '',
|
|
|
+ officialEmail: '',
|
|
|
+ verifyCode: '',
|
|
|
+ officialNumber: '',
|
|
|
+ role: ''
|
|
|
+ });
|
|
|
+
|
|
|
+ // 计算属性来检查密码是否匹配
|
|
|
+ const isPasswordMatch = computed(() => {
|
|
|
+ return formData.value.password === formData.value.confirmPassword;
|
|
|
+ });
|
|
|
+
|
|
|
+ const register = () => {
|
|
|
+ if (!isPasswordMatch.value) {
|
|
|
+ alert("两次输入的密码不匹配,请重新输入!");
|
|
|
+ return; // 阻止表单提交
|
|
|
+ }
|
|
|
+ //TODO: 在这里添加发送请求到后端的逻辑
|
|
|
+ console.log('注册信息:', formData.value);
|
|
|
+ // 你可以使用 axios 发送请求到你的后端API
|
|
|
+ };
|
|
|
+
|
|
|
+ return {
|
|
|
+ formData,
|
|
|
+ isPasswordMatch,
|
|
|
+ register
|
|
|
+ };
|
|
|
+ }
|
|
|
+};
|
|
|
+</script>
|