0
点赞
收藏
分享

微信扫一扫

项目知识点汇总

烟中雯城 2021-09-24 阅读 28

目标

  • 基本操作( crud)
  • 组件使用
  • 组件交互
  • axios

1、查询--form的使用- 主要用于列表

:data="tableData"

<el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange">

   export default {
data() {
  return {
    tableData: [],
    。。。。。
  }
}

mounted() {
//调用查询所有用户的方法
this.findAll();
},

      findAll() {
    //请求后台,查询所有用户
    this.$axios.get("http://localhost:8082/vue-servlet/findAllUser", 。。。。。。
      })
      .then(response => {
        let data = response.data; //后台的responseBean
        //用响应数据去更新
        this.tableData = data.list;
              })
      .catch()
  }

分页相关

页面部分

<el-pagination background layout="prev, pager, next" :total="total" :page-size="pageSize" @current-change="changePage">
</el-pagination>

数据部分

data() {
  return {
     。。。。。
    //以下三个是分页相关的属性
    total: 0, //查询得到
    pageSize: 2, //每页条数
    currentPage: 1,
    dialogFormVisible: false
  }
}

请求后台

  findAll() {
    //请求后台,查询所有用户
    this.$axios.get("http://localhost:8082/vue-servlet/findAllUser", {
        params: {
          currentPage: this.currentPage,
          pageSize: this.pageSize
        }
      })
      .then(response => {
        let data = response.data; //后台的responseBean
        //用响应数据去更新
        this.tableData = data.list;
        this.total = data.page.count;

      })
      .catch()
  }

2、添加功能

验证:我们采取的是定义验证规则
:rules="rules"

页面部分:

     <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">

js部分

   rules: {
      //required是否必填项  trigger:触发方式 blur:表示离开焦点时   message:错误提示
      username: [
        { required: true, message: '请输入活动名称', trigger: 'blur' },
        { min: 6, max: 20, message: '长度在 6 到 20 个字符', trigger: 'blur' }
      ],
      pass: [
        { validator: validatePass, trigger: 'blur' },
        { required: true, message: '请输入密码', trigger: 'blur' }
        ],
     checkPass: [
       { validator: validatePass2, trigger: 'blur' },
       { required: true, message: '请输入确认密码', trigger: 'blur' }
       ],
       //trigger: 'blur'     trigger: ['blur', 'change']
      email:[
         { required: true, message: '请输入邮箱地址', trigger: 'blur' },
         { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }
      ],
      idcard:[
         { min: 15, max: 18, message: '长度在 15 到 18 个字符', trigger: ['blur'] }
      ]


    }



  <el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>

  submitForm(formName) {
    this.$refs[formName].validate((valid) => {
      if (valid) {
      验证成功的逻辑
        //step 2如果影响后,我们再做后处理   --json


      } else {
        console.log('error submit!!');
        return false;
      }
    });
  }

修改

修改的步骤先查询getobjectbyid----》修改update***

      <el-button size="mini" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>

    this.$axios.get("http://localhost:8082/vue-servlet/getUserById?id=" + row.id)
      .then(response => {
        console.log(response);
        //查询成功之后,携带用户信息进修改页
        this.$router.push({
          path: '/updateUser',
          query: response.data.list[0]
        })
      })
      .catch(error => {
        console.log(error);
      })

  }

update页

        ruleForm: {
          id:this.$route.query.id,
          username: this.$route.query.userName,
          email: this.$route.query.email,
          idcard: this.$route.query.idCard,
          power:this.$route.query.power
        }

删除

      <el-button size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)">删除</el-button>

handleDelete(index, row) {

   this.$axios.get("http://localhost:8082/vue-servlet/delUserServlet?id="+row.id)
   .then(response=>{
     alert(response.data.msg)
     this.$router.push({
       path:'/findalluser'
     })
   })
    }

控件使用

-- 树

  <el-tree
    :props="props"
    :load="loadNode"
    node-key="id"
    ref="tree"
    lazy
    show-checkbox
    @check-change="getCheckedNodes"
    >


         props: {
            id:0,//新增加的,将来这部分就放菜单的id
            label: 'name',//菜单名字
            children: 'zones',//子菜单
            isLeaf: 'leaf'
          },

        loadNode(node, resolve) {
          if (node.level === 0) {
            return resolve([{ id:0,name: 'root' }]);
          }else{//无限级的菜单
            let selid = node.data.id;
            this.$axios.get("http://localhost:8082/vue-servlet/getMenuData?id=" + selid)
              .then(response => {
                resolve(response.data.list);
              })
          }
        }

        getCheckedNodes() {
          //清空原来的id列表
                this.menuids.splice(0,this.menuids.length);
                //console.log("select",this.$refs.tree.getCheckedNodes());//element-ui提供的获取所有被选中的结点
                //获取选中的节点集合
                let checks=this.$refs.tree.getCheckedNodes();
                //循环集合的每一个节点
                //bug修正,全选中时因为有0,外键错误,需要把0去除
               for(let i=0;i<checks.length;i++){
                 //把每个节点的id存放到专用数组里
                 if(checks[i].id!=0){
                  //alert(checks[i].id);
                  this.menuids.push(checks[i].id);
                  }
                }
                //console.log("menuids",this.menuids);
                //console.log("menuids_str",this.menuids.join());//1,2,3
                //所数组转换成用逗号分隔的字符串
                let menuids_str=this.menuids.join();
                //alert(menuids_str);
                //给父组件传过去
                this.$emit("getIds",menuids_str);
              }

-- 富文本
安装 main.js引用略

 <div class="edit_container">
  <quill-editor
   v-model="content"
   ref="myQuillEditor"
   :options="editorOption"
   @blur="onEditorBlur($event)" @focus="onEditorFocus($event)"
   @change="onEditorChange($event)">
  </quill-editor>

   <!-- <button @click="toParent">确认</button> -->
 </div>

 onEditorBlur(){
    alert(this.content);
    this.$emit("toParent", this.content);
    
    
  }

-- radio

     <el-form-item label="显示状态" prop="visible">
              <el-radio v-model="form.visible" label="0">显示</el-radio>
              <el-radio v-model="form.visible" label="1">隐藏</el-radio>
          </el-form-item>

-- number

         <el-input-number v-model="form.orderNum"  :min="0" :max="50" label="排序"></el-input-number>

-- select

<el-form-item label="角色">
<el-select v-model="ruleForm.power" placeholder="请选择角色">
<el-option
v-for="role in roleList"
:key="role.roleId"
:label="role.roleName"
:value="role.roleId">
</el-option>
</el-select>
</el-form-item>

 return {
    roleList:[],
 .......


mounted(){
  this.$axios.get("http://localhost:8082/vue-servlet/findAllRole")
  .then(response=>{
    console.log(response);
    this.roleList=response.data.list;
  })
}

其他

  <el-input type="password" v-model="ruleForm.pass" autocomplete="off"></el-input>
 <el-input v-model="ruleForm.username"></el-input>

组件交互

第一种:子组件触发父组件事件,进行传参emit
子组件tree.vue 触发父组件addMenu事件

子组件 this.$emit(eventname,params)

<el-tree
:props="props"
:load="loadNode"
node-key="id"
@node-click="handleNodeClick"
lazy
>
</el-tree>

    handleNodeClick(data) {
       console.log(data.id);
      this.$emit("getParentId",data.id)
    }

父组件引用组件和响应子组件事件

    import menutree from '@/components/common/menutree'


      components:{
        menutree
      }

          <menutree @getParentId="getId"></menutree>

        getId(id){
          //alert("parentid:"+id);
          this.form.parentId=id;

        }

第二种应用quill-editor子组件
子组件部分

  <quill-editor
   v-model="content"
   ref="myQuillEditor"
   :options="editorOption"
   @blur="onEditorBlur($event)" @focus="onEditorFocus($event)"
   @change="onEditorChange($event)">
  </quill-editor>

  onEditorBlur(){
    alert(this.content);
    this.$emit("toParent", this.content);
  }

父组件addnotice

  import quill from '@/components/common/quill'
    components:{
      quill
    }

    <quill v-model="ruleForm.newscontent" @toParent="getcontent"></quill>
      getcontent(content){
        this.ruleForm.newscontent=content;
      }

第二种 父组件给子组件传参
路由传参

name--params route.query.属性名

        this.$router.push({
          path: '/updateUser',
          query: response.data.list[0]
        }

        id:this.$route.query.id,

axios

post--json

              let obj=this.$qs.stringify(this.form);//json转换
              alert(obj);
              //step 2计划在这里用axios去给后台发送注册请求   (url,data)   data-json
              this.$axios.post('http://localhost:8082/vue-servlet/addMenu',obj)
              .then(response=>{
                alert(response.data.msg);
              })

get方式:

    this.$axios.get("http://localhost:8082/vue-servlet/getUserById?id=" + row.id)
      .then(response => {
        console.log(response);
        //查询成功之后,携带用户信息进修改页
        this.$router.push({
          path: '/updateUser',
          query: response.data.list[0]
        })
      })
      .catch(error => {
        console.log(error);
      })

    //请求后台,查询所有用户
    this.$axios.get("http://localhost:8082/vue-servlet/findAllUser", {
        params: {
          currentPage: this.currentPage,
          pageSize: this.pageSize
        }
      })
      .then(response => {
        let data = response.data; //后台的responseBean
        //用响应数据去更新
        this.tableData = data.list;
        this.total = data.page.count;

      })
      .catch()
举报

相关推荐

0 条评论