【无标题】

实现下图的级联选择器,基本用法官网上都有的,我这里记录一下,选好之后保存,然后打开能取到数据的过程。

一、选取数据

 HTML:

<el-form-item label="督察类别:" style="margin-left: 150px;">
     <el-cascader :options="supervisionTypeOptions" style="width:100%" clearable></el-cascader>
</el-form-item>

data基本结构:

supervisionTypeOptions: [
                { value: '重点科室', label: '重点科室', children: [{ value: 'aaa', label: 'aaa' }] },
                { value: '重点部位', label: '重点部位', children: [{ value: 'aaa', label: 'aaa' }] },
                { value: '重点人群', label: '重点人群', children: [{ value: 'aaa', label: 'aaa' }] },
            ], 

这里由于督察类别下重点科室的子项是从接口获取的,所以,这里的数据就需要我自己去拼接,具体的实现方式如下:

//查询并展示所有科室
 Req.GetDepartmentAsync().then(res => {
     if ((res.data || []).length > 0) {
         // 拼接至督察类别
         this.supervisionTypeOptions[0].children = []
         res.data.forEach(item => {
             this.supervisionTypeOptions[0].children.push({ value: item.departmentCode, label: item.departmentName });
          });
      }
});

拼接好之后,我就可以在打开Cascader 时,能展示(选择)里面的数据。

二、保存数据

数据已经拿到之后,就需要点击保存,能存到数据库,做存储之前先看后端需要的数据结构,再找方法。

不难看出,后端要的数据挺多,其中红框才是督察类别这一栏需要传过去的数据,接下来就是怎么拿到这些值并传给后端了。

首先,取值=> 用到的方法是: @change="handleChange($event)" 配合 ref="superRef"​ 才能取到选中的 value 和 label 值(后面获取 controlQualityDeptCode、 controlQualityDeptName、 controlQualityCategoryCode、 controlQualityCategoryName 都是用类似的方也就是这里的 departmentCode 和 departmentName 

<el-cascader :options="supervisionTypeOptions"  ref="superRef"
      @change="handleChange($event)" style="width:100%" clearable></el-cascader>
 // 拿到cascader里所选中值的value和label及督察类别supervisionType
handleChange(row) {
    const checkedNode = this.$refs["superRef"].getCheckedNodes();
    console.log(checkedNode); // 级联选择器所选的内容

    console.log(row); // 所选的 内容
    this.addForm.supervisionType = row[0];
    this.addForm.departmentCode = checkedNode[0].value;
    this.addForm.departmentName = checkedNode[0].data.label;
},

​​​​​​接下来就是保存了,拿到值之后,就要把这些值保存到接口中

/**
* 保存新增感染质量控制信息
*/
AddContorlData() {
    this.addForm.CreateBy = this.userCode
    Req.AddControlQualityScoreInfo(this.addForm).then(res => {
        if (res.status == 200) {
            this.$message({ type: 'success', message: '保存成功!' });
            this.GetTabData();
            this.isDisabled = true;

            this.searchildForm.controlQualityDeptCodeSearch = this.addForm.controlQualityDeptCode;       // searchildForm里的两个code 需要单独赋值,否则和上面的addForm里的重点科室会联动起来
            this.searchildForm.controlQualityCategoryCodeSearch =this.addForm.controlQualityCategoryCode;
            this.GetQualityList();

         } else {
               this.$message({ type: 'error', message: '保存失败!' });
         }
     })
},

三、读取数据

数据保存后,打开编辑窗口,应该能看到保存的数据,级联选择器就需要 设置一个 v-model 用来存储数据,v-model="selectedSupervisionType" 然后在需要取值的地方设置 this.selectedSupervisionType =["重点科室","aaa"]; 

<el-cascader :options="supervisionTypeOptions" v-model="selectedSupervisionType"  ref="superRef"
  @change="handleChange($event)" style="width:100%" clearable></el-cascader>
data() {
    return{
         selectedSupervisionType: [], //cascader 选中的值
    }
},
methods:{
     /**
      * 打开编辑窗口
     */
     OpenEditWin(data) {
         this.addForm = data;
         this.searchildForm.controlQualityDeptCodeSearch = data.controlQualityDeptCode;       // searchildForm里的两个code 需要单独赋值,否则和上面的addForm里的重点科室会联动起来
         this.searchildForm.controlQualityCategoryCodeSearch =data.controlQualityCategoryCode;
         this.changeDeptName('');     // 调用上面的方法 以此来获取编辑框里的项目类别的值
         this.selectedSupervisionType =[data.supervisionType,data.departmentCode]; // cascader 选中的值
         //查询并展示所有科室
         Req.GetDepartmentAsync(data).then(res => {
             if ((res.data || []).length > 0) {
                 this.supervisionTypeOptions[0].children = []
                 res.data.forEach(item => {
                     this.supervisionTypeOptions[0].children.push({ value: item.departmentCode, label: item.departmentName });
                  });
              }
          });
      this.userCode = window.sessionStorage.getItem("userCode");
      this.GetQualityList();
      this.isDisabled = true;
   },
}

此时再打开编辑页面就能看到保存时选择的数据了。

完结~~~~~ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值