77 <div class =" wrap" >
88 <el-row >
99 <el-col :lg =" 16" :md =" 20" :sm =" 24" :xs =" 24" >
10- <el-form :model =" book" status-icon ref =" form" label-width =" 100px" @submit.native.prevent >
10+ <el-form :model =" book" status-icon ref =" form" label-width =" 100px" @submit.native.prevent :rules = " rules " >
1111 <el-form-item label =" 书名" prop =" title" >
1212 <el-input size =" medium" v-model =" book.title" placeholder =" 请填写书名" ></el-input >
1313 </el-form-item >
@@ -45,7 +45,7 @@ import { Message } from 'element-ui'
4545import bookModel from ' @/model/book'
4646
4747export default {
48- setup (props , context ) {
48+ setup (props , ctx ) {
4949 const data = reactive ({
5050 book: {
5151 title: ' ' ,
@@ -55,31 +55,66 @@ export default {
5555 },
5656 })
5757
58+ /**
59+ * 表单规则验证
60+ */
61+ const { rules } = getRules ()
62+
5863 // 重置表单
5964 const resetForm = formName => {
60- context .refs [formName].resetFields ()
65+ ctx .refs [formName].resetFields ()
6166 }
6267
6368 const submitForm = async formName => {
64- try {
65- const res = await bookModel .createBook (data .book )
66- if (res .code < window .MAX_SUCCESS_CODE ) {
67- Message .success (` ${ res .message } ` )
68- resetForm (formName)
69+ ctx .refs [formName].validate (async valid => {
70+ if (valid) {
71+ try {
72+ const res = await bookModel .createBook (data .book )
73+ if (res .code < window .MAX_SUCCESS_CODE ) {
74+ Message .success (` ${ res .message } ` )
75+ resetForm (formName)
76+ }
77+ } catch (error) {
78+ Message .error (' 图书添加失败,请检测填写信息' )
79+ console .error (error)
80+ }
81+ } else {
82+ console .error (' error submit!!' )
83+ Message .error (' 请将信息填写完整' )
6984 }
70- } catch (error) {
71- Message .error (' 图书添加失败,请检测填写信息' )
72- console .log (error)
73- }
85+ })
7486 }
7587
7688 return {
77- ... toRefs (data),
78- submitForm,
89+ rules,
7990 resetForm,
91+ submitForm,
92+ ... toRefs (data),
8093 }
8194 },
8295}
96+
97+ /**
98+ * 表单验证规则
99+ */
100+ function getRules () {
101+ /**
102+ * 验证回调函数
103+ */
104+ const checkInfo = (rule , value , callback ) => {
105+ if (! value) {
106+ callback (new Error (' 信息不能为空' ))
107+ }
108+ callback ()
109+ }
110+ const rules = {
111+ title: [{ validator: checkInfo, trigger: ' blur' , required: true }],
112+ author: [{ validator: checkInfo, trigger: ' blur' , required: true }],
113+ summary: [{ validator: checkInfo, trigger: ' blur' , required: true }],
114+ image: [{ validator: checkInfo, trigger: ' blur' , required: true }],
115+ }
116+ return { rules }
117+ }
83118 </script >
84119
85120<style lang="scss" scoped>
0 commit comments