user模块功能完成crud-王荣荣如此唯美

user 模块界面操作

 

查询上次就搞定了,这一些完成,添加,修改,删除的逻辑

1, 添加

界面结构是: 

我给大家做个动图:

 

user模块功能完成crud-王荣荣如此唯美

 

1, el-dialog 的使用,

2, 表单数据的搜集,校验

3, 全局校验,

4, 清空表单数据选项!

开始:

       <!--  dialog 对话框-->
<el-dialog
  title="添加用户"
  :visible.sync="addUserdialogVisible"
  width="50%"
  @close="addUserClose">
  <el-form :model="addForm" :rules="addFormRules" ref="addRef" label-width="70px" class="demo-ruleForm">
  <el-form-item label="用户名" prop="username">
    <el-input v-model="addForm.username"></el-input>
  </el-form-item>
    <el-form-item label="密码" prop="password">
    <el-input v-model="addForm.password"></el-input>
  </el-form-item>
    <el-form-item label="手机号" prop="mobile">
    <el-input v-model="addForm.mobile"></el-input>
  </el-form-item>

    <el-form-item label="邮箱" prop="email">
    <el-input v-model="addForm.email"></el-input>
  </el-form-item>
  </el-form>
  <span slot="footer" class="dialog-footer">
    <el-button @click="addUserdialogVisible = false">取 消</el-button>
    <el-button type="primary" @click="addUser">确 定</el-button>
  </span>
</el-dialog>

上面是添加的dialog

user模块功能完成crud-王荣荣如此唯美控制 dialog 显示和隐藏

user模块功能完成crud-王荣荣如此唯美 添加按钮关闭时,执行的方法

user模块功能完成crud-王荣荣如此唯美

我们重点看模型还有校验规则

  addForm:{
              username:'',
              password:'',
              email:'',
              mobile:''
          },
          addFormRules:{
              username:[
                   { required: true, message: '请输入用户名', trigger: 'blur' }
              ],
              password:[
                  {
                       required: true, message: '请输入密码', trigger: 'blur'
                  }
              ],
              mobile:[{
                    required: true, message: '请输入手机号', trigger: 'blur'
              },{
                 validator: this.checkMobile, trigger: 'blur'   
              }],
              email:[
            { required: true, message: '请输入邮箱地址', trigger: 'blur' },
             { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }
              ]
            
          }

模型很简单,重点是用到 了校验器:

user模块功能完成crud-王荣荣如此唯美

自定义的校验器:我去,我的校验器又让删掉了,我补下:

   methods:{
         checkMobile (rule,value,cb){
             let reg = /^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]/
             if (reg.test(value)) {
                 cb()
                }else {
                  cb(new Error('手机号码格式不正确'))
              }
         },

以上就完成了,数据的搜集,数据的校验,当我们点确定的时候,还得全局校验一次:

  addUser(){
               // 2 ,校验数据,提交数据
            this.$refs.addRef.validate(async val=>{
               if(!val) return;
              let {data:res} =await this.$http.post("users",this.addForm);
              if(res.meta.status!==201) return this.$message.error("add fail")
              this.$message.success("添加用户成功");
               this.addUserdialogVisible=false;
               this.getUserList();
            })
       },

添加功能就讲到这里,无非校验器这块,有的用自定义校验,有的用async-validator 校验 规则,

————————————————————————

删除简单,要有个提示框

user模块功能完成crud-王荣荣如此唯美

这个是MessageBox

user模块功能完成crud-王荣荣如此唯美

user模块功能完成crud-王荣荣如此唯美

使用就行了:

       async del(user){
        //    console.log(".....")
          const res =  await this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
                }).catch(err=>err);
            if(res!=='confirm') return this.$message.info("您取消了删除操作")
            // next real delete 
            const {data:res2} = await this.$http.delete("users/"+user.id);
            if(res2.meta.status!=200) return this.$message.error("删除失败")
            this.$message.error("删除成功,重新获取数据")
            this.getUserList()

        },

这里要强调的是:

user模块功能完成crud-王荣荣如此唯美

成功返回 'confirm' 失败则返回'cancel'

_____________

 

修改逻辑,和添加逻辑差不多,不过有个表单回显的功能,稍微复杂些

1, 根据ID查找对应的数据 ,放data 里,以便 el-form 进行表单回显

 

2,修改后,搜集数据,校验,然后去 更新数据就行了

就这俩步骤!

user模块功能完成crud-王荣荣如此唯美

又是 el-dialog 嵌入 el-form

<!-- 修改的对话框操作 -->
<el-form :model="editForm" :rules="editrules" 
    ref="editFormRef" label-width="70px" 
    >

<el-form-item label="用户名" prop="id">
    <el-input v-model="editForm.username" disabled></el-input>
  </el-form-item>
  
    <el-form-item label="手机号" prop="mobile">
    <el-input v-model="editForm.mobile"></el-input>
  </el-form-item>

    <el-form-item label="邮箱" prop="email">
    <el-input v-model="editForm.email"></el-input>
  </el-form-item>
    </el-form>
  <span slot="footer" class="dialog-footer">
    <el-button @click="editdialogVisible = false">取 消</el-button>
    <el-button type="primary" @click="updateUser">确 定</el-button>
  </span>
</el-dialog>
  editForm:{
              id:0,
              email:'',
              mobile:'',
              role_id:0,
              username:""
       },
       editrules:{
              mobile:[{
                    required: true, message: '请输入手机号', trigger: 'blur'
              },{
                 validator: this.checkMobile, trigger: 'blur'   
              }],
              email:[
            { required: true, message: '请输入邮箱地址', trigger: 'blur' },
             { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }
              ]  
       },
            editdialogVisible:false,

 

好,模型和校验规则写好了,

methods:

 handleClose(){
            this.$refs.editFormRef.resetFields()
        },
        // update user
        updateUser(){
              // 2 ,校验数据,提交数据
            this.$refs.editFormRef.validate(async val=>{
               if(!val) return;
               // check success
                // console.log("edit ...")      
             const {data:res} = await this.$http.put('users/'+this.editForm.id,{
                    email:this.editForm.email,
                    mobile:this.editForm.mobile
                })

              if(res.meta.status!==200) return this.$message.error("update fail")  
                this.$message.success("更新成功")
                // 2, 刷新数据
                this.getUserList()
                //3, 提交成功后,关闭对话框,刷新页面 
             this.editdialogVisible = false;  
            })
            
        },
        async editUser(user){
            // 1 获取数据用于表单的回显:
           const {data:res} = await  this.$http.get('users/'+user.id);
            if(res.meta.status!==200) return ;
            this.editForm = res.data;
            // 2 ,校验数据,提交数据

            //3, 提交成功后,关闭对话框,刷新页面

            this.editdialogVisible = true;
        },

editUser 用来获取数据,进行表单的回显

updateUser 真正去更新数据!

————————————————————————————

user模块功能完成crud-王荣荣如此唯美

el-input 有个可清空的操作,同时还提供可监听清空时的回调,以便于我们查找操作:

user模块功能完成crud-王荣荣如此唯美

 

上一篇:SAP OBYC Account Determination


下一篇:mybatis Mapper文件内的配置标签使用 & CRUD编写 场景作用理解(一)