首页 > 编程语言 >支付宝小程序的级联选择器,对接简单操作,Cascader 级联选择器element_ui

支付宝小程序的级联选择器,对接简单操作,Cascader 级联选择器element_ui

时间:2023-11-03 20:14:20浏览次数:38  
标签:category 级联 firstCategory thirdCategoryList 选择器 secondCategory error element id

首先,对于element_ui 的动接,由于需要数据格式是

 

但是支付宝提的接口返回的数据是另一种格式,并且支付宝的三级联动接口是先只有一个列表,点击列表项再发现请求,生成另外一个下拉选择,

需要这个三级联动不能直接使用element-ui的三级联动。需要自己实现这个功能

 并且支付宝的这个数据是选中数据后再发下一级数据响应的,

思路:

先设三个select 表单,默认第一个表单发出请求,获取第一个下拉列表,当改变时,将改变的值用来做参数,发起一个获取二级的请求请求,当二维改变时再发起第三级列表的数据的请求,由于我这个代码的请求是封装后的请求,直接复制可能运行不了,主要是思路,正面会在说一下通用主代码,大家可能用在自己项目上

关健代码,给每个下拉选择绑定事件,并且事件将变时发出请求

 第二步重点,是支付宝返回数例表中取key和value 的时候,自己先看一下结果在想根据那个做值发起请求。后端需要什么值,请先思考一下,如查你正好有相同需求,这块代码很好懂,如果没有需求,直接看这代码对于新手会蒙,所以需求才是内驱。

<template>
  <div>
    <el-select v-model="firstCategory" placeholder="请选择一级分类" @change="getSecondCategory">
      <el-option v-for="category in firstCategoryList" :key="category.category_id" :value="category.category_id" :label="category.category_name"></el-option>
    </el-select>
    <el-select v-model="secondCategory" placeholder="请选择二级分类" @change="getThirdCategory" v-if="secondCategoryList.length > 0">
      <el-option v-for="category in secondCategoryList" :key="category.category_id" :value="category.category_id" :label="category.category_name"></el-option>
    </el-select>
    <el-select v-model="thirdCategory" placeholder="请选择三级分类" @change="saveThirdCategory" v-if="thirdCategoryList.length > 0">
      <el-option v-for="category in thirdCategoryList" :key="category.category_id" :value="category.category_id" :label="category.category_name"></el-option>
    </el-select>
    <div v-if="thirdCategoryList.length === 0">没有下一级</div>
    <div>输出测试{{ categoryIds }}</div>
  </div>
</template>
<script>
import axios from 'axios';

export default {
  data() {
    return {
      firstCategory: '',
      secondCategory: '',
      thirdCategory: '',
      firstCategoryList: [],
      secondCategoryList: [],
      thirdCategoryList: [],
      categoryIds: []
    };
  },
  created() {
    this.getAlipayMiniCategoryList();
  },
  methods: {
    getAlipayMiniCategoryList() {
      this.request({
        url: '/alipayAccountSettings/getAlipayMiniCategoryList',
        params:{
          category_id:'',
          category:'',
        }
      }).then(resp => {
        this.firstCategoryList = resp.alipayMiniCategoryList
        console.log("第一次获妈值",this.thirdCategoryList)
      }).catch(error => {
        console.log(error);
      });
    },
    getSecondCategory() {
      // 清空后续级别的选择和保存的category_id
      this.secondCategory = '';
      this.thirdCategory = '';
      this.secondCategoryList = [];
      this.thirdCategoryList = [];
      this.categoryIds = [this.firstCategory];
      if (!this.firstCategory) return;
      // 向服务器请求二级数据,传入一级分类的category_id作为请求参数
      this.request({
        url: '/alipayAccountSettings/getAlipayMiniCategoryList',
        category_id: this.firstCategory
      }).then(resp => {
        this.secondCategoryList = resp.alipayMiniCategoryList;
        console.log("第二次获妈值",this.thirdCategoryList)
      }).catch(error => {
        console.log(error);
      });
    },
    getThirdCategory() {
      // 清空后续级别的选择和保存的category_id
      this.thirdCategory = '';
      this.thirdCategoryList = [];
      this.categoryIds = [this.firstCategory, this.secondCategory];
      if (!this.secondCategory) return;
      // 向服务器请求三级数据,传入二级分类的category_id作为请求参数
      this.request({
        url: '/alipayAccountSettings/getAlipayMiniCategoryList',
        category_id: this.secondCategory
      }).then(resp => {
        this.thirdCategoryList = resp.alipayMiniCategoryList;
        console.log("第三次获妈值",this.thirdCategoryList)
      }).catch(error => {
        console.log(error);
      });
    },
    // 三级联动最后一个表单改变时
    saveThirdCategory(){
      this.categoryIds = [this.firstCategory, this.secondCategory, this.thirdCategory];
    }
  }
};
</script>

三级联动选择表单,通过改变时发起下一级请求示例,以下通片的方法

<template>
  <div>
    <el-select v-model="firstCategory" placeholder="请选择一级分类" @change="getSecondCategory">
      <el-option v-for="category in firstCategoryList" :key="category.category_id" :value="category.category_id" :label="category.category_name"></el-option>
    </el-select>
    <el-select v-model="secondCategory" placeholder="请选择二级分类" @change="getThirdCategory" v-if="secondCategoryList.length > 0">
      <el-option v-for="category in secondCategoryList" :key="category.category_id" :value="category.category_id" :label="category.category_name"></el-option>
    </el-select>
    <el-select v-model="thirdCategory" placeholder="请选择三级分类" v-if="thirdCategoryList.length > 0" @change="saveThirdCategory">
      <el-option v-for="category in thirdCategoryList" :key="category.category_id" :value="category.category_id" :label="category.category_name"></el-option>
    </el-select>
    <div v-if="thirdCategoryList.length === 0">没有下一级</div>
    <div>每一级的category_id:{{ categoryIds }}</div>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      firstCategory: '',
      secondCategory: '',
      thirdCategory: '',
      firstCategoryList: [],
      secondCategoryList: [],
      thirdCategoryList: [],
      categoryIds: []
    };
  },
  created() {
    this.getAlipayMiniCategoryList();
  },
  methods: {
    getAlipayMiniCategoryList() {
      // 向服务器请求数据
      axios.get('/getAlipayMiniCategoryList')
        .then(response => {
          this.firstCategoryList = response.data.alipayMiniCategoryList;
        })
        .catch(error => {
          console.log(error);
        });
    },
    getSecondCategory() {
      // 清空后续级别的选择和保存的category_id
      this.secondCategory = '';
      this.thirdCategory = '';
      this.secondCategoryList = [];
      this.thirdCategoryList = [];
      this.categoryIds = [this.firstCategory];

      if (!this.firstCategory) return;

      // 向服务器请求二级数据,传入一级分类的category_id作为请求参数
      axios.get('/getSecondCategory', {
          params: {
            category_id: this.firstCategory
          }
        })
        .then(response => {
          this.secondCategoryList = response.data.alipayMiniCategoryList;
        })
        .catch(error => {
          console.log(error);
        });
    },
    getThirdCategory() {
      // 清空后续级别的选择和保存的category_id
      this.thirdCategory = '';
      this.thirdCategoryList = [];
      this.categoryIds = [this.firstCategory, this.secondCategory];

      if (!this.secondCategory) return;

      // 向服务器请求三级数据,传入二级分类的category_id作为请求参数
      axios.get('/getThirdCategory', {
          params: {
            category_id: this.secondCategory
          }
        })
        .then(response => {
          this.thirdCategoryList = response.data.alipayMiniCategoryList;
        })
        .catch(error => {
          console.log(error);
        });
    },
    saveThirdCategory() {
      // 保存第三级的选择到categoryIds数组中
      this.categoryIds = [this.firstCategory, this.secondCategory, this.thirdCategory];
    }
  }
};
</script>

  

 

标签:category,级联,firstCategory,thirdCategoryList,选择器,secondCategory,error,element,id
From: https://www.cnblogs.com/ZzwWan/p/17808305.html

相关文章

  • Ant组件踩坑记录(日期选择器)
    1.日期选择器<a-date-picker/>数值转化问题原先写法,我是直接绑定“2023-11-0300:00:00”的string值,结果发现日期框无法显示这个日期<a-date-pickerv-model:value="timeInfo.invoiceDate"format="YYYY-MM-DDHH:mm:ss"show-time/> 网上看了一圈,没有同类问题(PS:我太菜......
  • elementui字符串和数字型单选框的区别
    单选框的取值类型一般有两种,一种是字符串,一种是数字型。两者在使用上有区别数字型<el-radio:disabled="true"v-model="meetingType":label="1">线上会议</el-radio><el-radio:disabled="true"v-model=......
  • Vue树形单选选择器
    调用页面SuperviseTimerModal.vue代码如下:<template><div><j-modalcentered:title="title":width="width":visible="visible":destroyOnClose="true"switchFullscreen......
  • 使用Chrome的Element Inspector在打印预览模式下?
    内容来自DOChttps://q.houxu6.top/?s=使用Chrome的ElementInspector在打印预览模式下?我正在开发一个网站,需要在打印预览模式下进行工作。通常,当我遇到布局问题时,我会使用Chrome的ElementInspector。然而,在打印预览模式下并不存在ElementInspector。是否有Chrome插件或其......
  • 使用LiveNVR将局域网Onvif/RTSP/SDK等协议转GB28181级联输出或GB35114级联输出,上级平
    1、第一步:抓包工具准备1.1、Linux使用tcpdump进行抓包,如果系统无此命令,自行安装1.2、windows下载安装wireshark进行抓包2、第二步:找到上级平台ip在基础配置里面GB28181级联配置中SIP服务IP3、第三步:执行命令抓设备出口ip3.1Linux在Linux系统中切换到root用户,执行下......
  • css选择器的应用
    css中的选择器有多种,他们的优先级(权重):标签选择器<class选择器<id选择器<!important1.标签指定选择器div.box{}2.子代选择器ul>li>ol>li{}3.后代选择器ulli{}4.并集选择器box,div,p{}案例:完成以下案例答案:......
  • css的ip选择器与class选择器
    1.class选择器2.id选择器3.效果图4.通配符选择器 *{}......
  • ElementUI Checkbox 多选框 返回对象
    checkBox和checkGroup通过v-model绑定的数据只能是number/string/Array 如何回调返回对象呢? 已知能返回label字符串,我们可以把label=对象id +','+ 对象名称拼接,然后返回,或者label=json字符串再传出每次选中操作后会回调返回选中数组 ......
  • 递归函数实现省市区多级联动搜索帮助
    1、需求背景当程序中有互为层级的字段,需要使用搜索帮助时,可以通过多次调用搜索帮助来实现。比如在程序中需要填写省市区三级地址2、实现方式2.1、平铺直叙程序的搜索帮助,通常使用F4IF_INT_TABLE_VALUE_REQUEST来实现。多级的搜索帮助,可以简单的通过多次调用F4函数来实现。点......
  • 智能安防视频监控平台EasyCVR级联上级时无播放画面是什么原因?该如何解决?
    视频汇聚/视频云存储/集中存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、云存储、智能分析等,视频智能分析平台EasyCVR融合性强、开放度高、部署轻快,在智慧工地、智慧园区、智慧......