You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
12 KiB
1 lines
12 KiB
{"ast":null,"code":"import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"register-container\"\n};\nconst _hoisted_2 = {\n class: \"register-box\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_form = _resolveComponent(\"el-form\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_cache[7] || (_cache[7] = _createElementVNode(\"h2\", null, \"用户注册\", -1 /* HOISTED */)), _createVNode(_component_el_form, {\n ref: \"formRef\",\n model: $setup.form,\n rules: $setup.rules,\n \"label-width\": \"0\",\n class: \"register-form\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n prop: \"username\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.form.username,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.form.username = $event),\n placeholder: \"请输入用户名\",\n \"prefix-icon\": \"User\"\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n prop: \"password\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.form.password,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.form.password = $event),\n type: \"password\",\n placeholder: \"请输入密码\",\n \"prefix-icon\": \"Lock\",\n \"show-password\": \"\"\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n prop: \"confirmPassword\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.form.confirmPassword,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.form.confirmPassword = $event),\n type: \"password\",\n placeholder: \"请确认密码\",\n \"prefix-icon\": \"Lock\",\n \"show-password\": \"\"\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n prop: \"email\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.form.email,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.form.email = $event),\n placeholder: \"请输入邮箱\",\n \"prefix-icon\": \"Message\"\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, null, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"primary\",\n class: \"submit-btn\",\n loading: $setup.loading,\n onClick: $setup.handleSubmit\n }, {\n default: _withCtx(() => _cache[5] || (_cache[5] = [_createTextVNode(\" 注册 \")])),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"loading\"]), _createVNode(_component_el_button, {\n class: \"submit-btn\",\n onClick: _cache[4] || (_cache[4] = $event => _ctx.$router.push('/login'))\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\" 返回登录 \")])),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_createVNode","_component_el_form","ref","model","$setup","form","rules","default","_withCtx","_component_el_form_item","prop","_component_el_input","modelValue","username","_cache","$event","placeholder","_","password","type","confirmPassword","email","_component_el_button","loading","onClick","handleSubmit","_createTextVNode","_ctx","$router","push"],"sources":["D:\\IDEAproject\\frontend\\Front-end logistics\\src\\views\\register\\index.vue"],"sourcesContent":["<template>\r\n <div class=\"register-container\">\r\n <div class=\"register-box\">\r\n <h2>用户注册</h2>\r\n \r\n <el-form \r\n ref=\"formRef\"\r\n :model=\"form\"\r\n :rules=\"rules\"\r\n label-width=\"0\"\r\n class=\"register-form\"\r\n >\r\n <el-form-item prop=\"username\">\r\n <el-input\r\n v-model=\"form.username\"\r\n placeholder=\"请输入用户名\"\r\n prefix-icon=\"User\"\r\n />\r\n </el-form-item>\r\n \r\n <el-form-item prop=\"password\">\r\n <el-input\r\n v-model=\"form.password\"\r\n type=\"password\"\r\n placeholder=\"请输入密码\"\r\n prefix-icon=\"Lock\"\r\n show-password\r\n />\r\n </el-form-item>\r\n \r\n <el-form-item prop=\"confirmPassword\">\r\n <el-input\r\n v-model=\"form.confirmPassword\"\r\n type=\"password\"\r\n placeholder=\"请确认密码\"\r\n prefix-icon=\"Lock\"\r\n show-password\r\n />\r\n </el-form-item>\r\n \r\n <el-form-item prop=\"email\">\r\n <el-input\r\n v-model=\"form.email\"\r\n placeholder=\"请输入邮箱\"\r\n prefix-icon=\"Message\"\r\n />\r\n </el-form-item>\r\n \r\n <el-form-item>\r\n <el-button \r\n type=\"primary\" \r\n class=\"submit-btn\"\r\n :loading=\"loading\"\r\n @click=\"handleSubmit\"\r\n >\r\n 注册\r\n </el-button>\r\n <el-button \r\n class=\"submit-btn\"\r\n @click=\"$router.push('/login')\"\r\n >\r\n 返回登录\r\n </el-button>\r\n </el-form-item>\r\n </el-form>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup>\r\nimport { ref, reactive } from 'vue'\r\nimport { useRouter } from 'vue-router'\r\nimport { ElMessage } from 'element-plus'\r\nimport { User, Lock, Message } from '@element-plus/icons-vue'\r\nimport { register } from '@/api/auth'\r\n\r\nconst router = useRouter()\r\nconst formRef = ref(null)\r\nconst loading = ref(false)\r\n\r\nconst form = reactive({\r\n username: '',\r\n password: '',\r\n confirmPassword: '',\r\n email: ''\r\n})\r\n\r\n// 验证密码是否一致\r\nconst validatePass = (rule, value, callback) => {\r\n if (value === '') {\r\n callback(new Error('请再次输入密码'))\r\n } else if (value !== form.password) {\r\n callback(new Error('两次输入密码不一致'))\r\n } else {\r\n callback()\r\n }\r\n}\r\n\r\nconst rules = {\r\n username: [\r\n { required: true, message: '请输入用户名', trigger: 'blur' },\r\n { min: 4, max: 20, message: '长度在 4 到 20 个字符', trigger: 'blur' }\r\n ],\r\n password: [\r\n { required: true, message: '请输入密码', trigger: 'blur' },\r\n { min: 6, max: 20, message: '长度在 6 到 20 个字符', trigger: 'blur' }\r\n ],\r\n confirmPassword: [\r\n { required: true, validator: validatePass, trigger: 'blur' }\r\n ],\r\n email: [\r\n { required: true, message: '请输入邮箱地址', trigger: 'blur' },\r\n { type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur' }\r\n ]\r\n}\r\n\r\nconst handleSubmit = async () => {\r\n if (!formRef.value) return\r\n \r\n try {\r\n await formRef.value.validate()\r\n loading.value = true\r\n \r\n // 去掉确认密码字段\r\n const { confirmPassword, ...registerData } = form\r\n const res = await register(registerData)\r\n \r\n if (res.code === 200) {\r\n ElMessage.success({\r\n message: '注册成功,请登录',\r\n duration: 2000\r\n })\r\n // 延迟跳转,让用户看到成功提示\r\n setTimeout(() => {\r\n router.push({\r\n path: '/login',\r\n query: { username: form.username } // 传递用户名到登录页\r\n })\r\n }, 2000)\r\n }\r\n } catch (error) {\r\n console.error('注册失败:', error)\r\n // 显示后端返回的具体错误信息\r\n if (error.response?.data?.message) {\r\n ElMessage.error(error.response.data.message)\r\n } else {\r\n ElMessage.error(error.message || '注册失败,请重试')\r\n }\r\n } finally {\r\n loading.value = false\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.register-container {\r\n height: 100vh;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n background-color: #f5f5f5;\r\n}\r\n\r\n.register-box {\r\n width: 400px;\r\n padding: 30px;\r\n background: white;\r\n border-radius: 8px;\r\n box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);\r\n}\r\n\r\nh2 {\r\n text-align: center;\r\n margin-bottom: 30px;\r\n color: #409EFF;\r\n}\r\n\r\n.register-form {\r\n margin-top: 20px;\r\n}\r\n\r\n.submit-btn {\r\n width: 100%;\r\n margin-top: 10px;\r\n}\r\n</style> "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|