首页 > 其他分享 >Vue项目中使用Elemen-tUI做一个Steps步骤条和Tabs标签页的联动效果功能

Vue项目中使用Elemen-tUI做一个Steps步骤条和Tabs标签页的联动效果功能

时间:2022-11-27 14:44:51浏览次数:37  
标签:Vue tUI trigger 商品 Elemen goods blur message true

Vue项目中使用Elemen-tUI做一个steps步骤条:左边的内容和步骤条进度效果是同步的切换,顶部是

(1)steps步骤条

(2)Tabs标签页

(3)steps步骤条和tabs标签页之间的联动效果

思路:

      那么这里需要步骤条的属性名称和标签页的属性名称联动同步切换的功能:步骤条是属性 :active="activeIndex" 来实现动态切换,tabs标签页是有个v-model属性绑定到每一个成员的那么属性来实现动态天哪切换。---那么两个绑定实现联动效果的话:步骤条的activetabs标签页的v-model都给绑定到data里的activeIndex数据源就可以

是因为activeIndex 只能接受数字,所有activeIndex-0是数字格式,data里的activeIndex页是 activeIndex: '0' 格式,接受v-model能接受的格式。就这样tabs标签页和steps步骤条实现联动链接效果。

(4)标签页写Form表单

效果图:

code代码
 <template>
  <div>
    <!--  面包屑-->
    <el-breadcrumb separator-class="el-icon-arrow-right">
      <el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
      <el-breadcrumb-item>商品管理</el-breadcrumb-item>
      <el-breadcrumb-item>添加商品</el-breadcrumb-item>
    </el-breadcrumb>
    <!--  卡片视图区-->
    <el-card>
      <!--    提示区域-->
      <el-alert title="添加商品信息" type="warning" center show-icon :closable="false">
      </el-alert>
      <!--    步骤条-->
      <el-steps :space="200" :active="activeIndex-0" finish-status="success" align-center>
        <el-step title="基本信息"></el-step>
        <el-step title="商品参数"></el-step>
        <el-step title="商品属性"></el-step>
        <el-step title="商品图片"></el-step>
        <el-step title="商品内容"></el-step>
        <el-step title="完成"></el-step>
      </el-steps>
      <!--    tabs标签页-->
      <el-form :model="addForm" :rules="addFormRules" ref="addFormRef" label-width="100px" label-position="top">
        <el-tabs v-model="activeIndex" :tab-position="'left'">
          <el-tab-pane label="基本信息" name="0">
            <el-form-item label="商品名称" prop="goods_name">
              <el-input v-model="addForm.goods_name"></el-input>
            </el-form-item>
            <el-form-item label="商品价格" prop="goods_price">
              <el-input v-model="addForm.goods_price" type="number"></el-input>
            </el-form-item>
            <el-form-item label="商品重量" prop="goods_weight">
              <el-input v-model="addForm.goods_weight"></el-input>
            </el-form-item>
            <el-form-item label="商品数量" prop="goods_number">
              <el-input v-model="addForm.goods_number" type="number"></el-input>
            </el-form-item>
            

          </el-tab-pane>
          <el-tab-pane label="商品参数" name="1">商品参数</el-tab-pane>
          <el-tab-pane label="商品属性" name="2">商品属性</el-tab-pane>
          <el-tab-pane label="商品图片" name="3">商品图片</el-tab-pane>
          <el-tab-pane label="商品内容" name="4">商品内容</el-tab-pane>
        </el-tabs>
      </el-form>
    </el-card>
  </div>
</template>

<script>
export default {
  data() {
    return {
      activeIndex: '0',
      //添加商品的表单对象
      addForm: {},
      addFormRules: {
        goods_name: [
          {required: true, message: '请输入商品名称', trigger: 'blur'}
        ],
        goods_price: [
          {required: true, message: '请输入商品价格', trigger: 'blur'}
        ],
        goods_weight: [
          {required: true, message: '请输入商品重量', trigger: 'blur'}
        ],
        goods_number: [
          {required: true, message: '请输入商品数量', trigger: 'blur'}
        ],
      },   //必应验证规则对象
      goods_name: '',   //商品名称
      goods_price: 0,    //价格
      goods_weight: 0,    //重量
      goods_number: 0,    //数量
      catelist:[],     //获取商品分类数据列表

    }
  },
  created() {
    this.getCateList()
  },
  methods: {
    // 获取所有分类数据

  }
}
</script>

<style scoped lang="less">

</style>

(5)级联选择器(渲染获取数据)

在create生命周期里触发函数获取所有商品分类的数据,并且赋值给级联选择器的数据源

(6)判断级联选择器选择范围

就是判断级联选择器的选择范围:选择了三级是true成立,选择了1,2级分类是不成立,如果是选中了1,2级分类的话直接清空

code代码
 <template>
  <div>
    <!--  面包屑-->
    <el-breadcrumb separator-class="el-icon-arrow-right">
      <el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
      <el-breadcrumb-item>商品管理</el-breadcrumb-item>
      <el-breadcrumb-item>添加商品</el-breadcrumb-item>
    </el-breadcrumb>
    <!--  卡片视图区-->
    <el-card>
      <!--    提示区域-->
      <el-alert title="添加商品信息" type="warning" center show-icon :closable="false">
      </el-alert>
      <!--    步骤条-->
      <el-steps :space="200" :active="activeIndex-0" finish-status="success" align-center>
        <el-step title="基本信息"></el-step>
        <el-step title="商品参数"></el-step>
        <el-step title="商品属性"></el-step>
        <el-step title="商品图片"></el-step>
        <el-step title="商品内容"></el-step>
        <el-step title="完成"></el-step>
      </el-steps>
      <!--    tabs标签页-->
      <el-form :model="addForm" :rules="addFormRules" ref="addFormRef" label-width="100px" label-position="top">
        <el-tabs v-model="activeIndex" :tab-position="'left'">
          <el-tab-pane label="基本信息" name="0">
            <el-form-item label="商品名称" prop="goods_name">
              <el-input v-model="addForm.goods_name"></el-input>
            </el-form-item>
            <el-form-item label="商品价格" prop="goods_price">
              <el-input v-model="addForm.goods_price" type="number"></el-input>
            </el-form-item>
            <el-form-item label="商品重量" prop="goods_weight">
              <el-input v-model="addForm.goods_weight"></el-input>
            </el-form-item>
            <el-form-item label="商品数量" prop="goods_number">
              <el-input v-model="addForm.goods_number" type="number"></el-input>
            </el-form-item>
            <el-form-item label="商品分类" prop="goods_cat">
              <el-cascader
                expand-trigger="hover "
                v-model="addForm.goods_cat"
                :options="catelist"
                :props="cateProps"
                @change="handleChange">

              </el-cascader>
            </el-form-item>
          </el-tab-pane>
          <el-tab-pane label="商品参数" name="1">商品参数</el-tab-pane>
          <el-tab-pane label="商品属性" name="2">商品属性</el-tab-pane>
          <el-tab-pane label="商品图片" name="3">商品图片</el-tab-pane>
          <el-tab-pane label="商品内容" name="4">商品内容</el-tab-pane>
        </el-tabs>
      </el-form>
    </el-card>
  </div>
</template>

<script>
export default {
  data() {
    return {
      activeIndex: '0',
      //添加商品的表单对象
      addForm: {
        goods_name: '',   //商品名称
        goods_price: 0,    //价格
        goods_weight: 0,    //重量
        goods_number: 0,    //数量
        goods_cat: [],    //商品所属于的分类数组
      },
      addFormRules: {
        goods_name: [
          {required: true, message: '请输入商品名称', trigger: 'blur'}
        ],
        goods_price: [
          {required: true, message: '请输入商品价格', trigger: 'blur'}
        ],
        goods_weight: [
          {required: true, message: '请输入商品重量', trigger: 'blur'}
        ],
        goods_number: [
          {required: true, message: '请输入商品数量', trigger: 'blur'}
        ],
        goods_cat:[
          {required: true, message: '请输入商品数量', trigger: 'blur'}
        ]
      },   //必应验证规则对象
      catelist: [],     //获取商品分类数据列表
      cateProps: {
        label: 'cat_name',
        value: 'cat_id',
        children: 'children'
      }

    }
  },
  created() {
    this.getCateList()
  },
  methods: {
    // 获取所有分类数据
    async getCateList() {
      const {data: res} = await this.$http.get('categories')
      if (res.meta.status !== 200) {
        return this.$message.error('获取商品分类失败!')
      }
      this.$message.success('获取商品分类成功!')
      this.catelist = res.data
      console.log(res.data)
    },
    // 简历选择器变化时触发的函数
    handleChange() {
      console.log(this.addForm.goods_cat)
      if (this.addForm.goods_cat.length !== 3){
        this.addForm.goods_cat.length=[]
      }
    }
  },


}
</script>

<style scoped lang="less">

</style>

标签:Vue,tUI,trigger,商品,Elemen,goods,blur,message,true
From: https://www.cnblogs.com/mahmud/p/16929634.html

相关文章

  • 《vue.js设计与实现》笔记(1~4章)
    以下内容均来自本书第1章命令式编程与声明式编程关注结果(声明式)和关注过程(命令式)运行时和编译时(vue、react、svelte)坐火车时,进站检票(编译时)和上车检票(运行时)框架性......
  • vuex-actions
    示例:修改state中info对象的name值state:{info:{id:1003,name:"kobe"}} actions:{//异步的操作写在actions里面aUpdateInfo(context......
  • vue + node 前后端分离项目解决跨域问题
    vue+node前后端分离项目解决跨域问题由于前端和后端项目运行于不同端口,无法直接传递数据后端app.js添加如下代码varcors=require('cors')app.use(cors())......
  • Chrome 浏览器安装Vue插件方法
    谷歌浏览器扩展程序首先去github下载vue.zip文件插件 下载地址:https://github.com/vuejs/vue-devtools不要去下载默认分支的下载后解压验证npm是否安装成功命令,......
  • js框架:vue3
    一个前端网页有:HTML,js,css三个部分主组成,高级一点的动态页就外加后台代码。vue:是JavaScript封装起来的框架【js---》jQuery---》vue框架】,js就JavaScript的简写,其框架作用就......
  • Nginx同域名下配置多个Vue项目
    #HTTPSserverserver{listen443;server_name************.com;sslon;ssl_certificatecert/*......
  • 从零开始写一个vuepress插件
    初始化插件项目在任意目录新建一个插件目录,我这里在/pkg/vuepress-plugin-simple-encryptmkdir/pkg/vuepress-plugin-simple-encrypt进入该目录,初始化项目yarn......
  • renren-fast-vue人人开源前端项目搭建保姆级教程
    1、从gitee上clone项目gitclonehttps://gitee.com/renrenio/renren-fast-vue.git2、准备好python环境需要有Python2以上的环境,我安装了Python3.10.0的版本,可以搭建成......
  • vue 列表页面点击编辑页面传值
    props分为三种形式props为对象props为布尔值,这种只能接收params动态路由的参数props为函数,可以接收query和params参数(推荐)importVuefrom'vue'importVueRoute......
  • vue路由传参的三种写法
    methods:{goSearch(){//1.路由传参字符串形式//this.$router.push("/Search/"+this.keyword+"?k="+this.keyword.toUpp......