vue 使用vant折叠面板自定义内容

效果图:

Collapse 折叠面板

介绍

将一组内容放置在多个折叠面板中,点击面板的标题可以展开或收缩其内容。

引入

import Vue from 'vue';
import { Collapse, CollapseItem } from 'vant';

Vue.use(Collapse);
Vue.use(CollapseItem);

代码演示

基础用法

通过 v-model 控制展开的面板列表,activeNames 为数组格式。

<van-collapse v-model="activeNames">
  <van-collapse-item title="标题1" name="1">内容</van-collapse-item>
  <van-collapse-item title="标题2" name="2">内容</van-collapse-item>
  <van-collapse-item title="标题3" name="3">内容</van-collapse-item>
</van-collapse>
export default {
  data() {
    return {
      activeNames: ['1'],
    };
  },
};

在基础用法的基础上,因为页面太长,因此需要使用手风琴模式。

手风琴

通过 accordion 可以设置为手风琴模式,最多展开一个面板,此时 activeName 为字符串格式。

<van-collapse v-model="activeName" accordion>
  <van-collapse-item title="标题1" name="1">内容</van-collapse-item>
  <van-collapse-item title="标题2" name="2">内容</van-collapse-item>
  <van-collapse-item title="标题3" name="3">内容</van-collapse-item>
</van-collapse>
export default {
  data() {
    return {
      activeName: '1',
    };
  },
};

基于以上官方文档介绍,下面实现自己的代码逻辑。

 页面渲染:

<van-collapse v-model="activeNames" accordion>
                    <van-collapse-item :title="item.type" :name="item.type" v-for="        (item,index) in typelist" :key="index">
                        <van-form v-for="(ele,i) in item.data" :key="i">
                            <van-row gutter="20">
                                <van-col span="2">
                                    <van-field
                                        :name="i+1+''"
                                        :label="i+1"
                                    />
                                </van-col>
                                <van-col span="16">
                                    <van-field
                                        v-model="ele.name"
                                        label-width="16em"
                                        :name="ele.name"
                                        :label="ele.name"
                                    />
                                </van-col>
                                <van-col span="6">
                                    <van-field
                                        v-model="ele.unit"
                                        :name="ele.unit"
                                        :label="'单位:'+ele.unit"
                                    />
                                </van-col>
                                <van-field 
                                        type="digit"
                                        v-model="ele.xiaohao"
                                        name="消耗数量"
                                        label="消耗数量"
                                    />
                                    <van-field
                                        type="digit"
                                        v-model="ele.kucun"
                                        name="库存数量"
                                        label="库存数量"
                                    />
                                    <van-field 
                                        type="digit"
                                        v-model="ele.waigou"
                                        name="外部购"
                                        label="外部购(新增数量)"
                                    />
                                    <van-field 
                                        type="digit"
                                        v-model="ele.shangdiao"
                                        name="上面调"
                                        label="上面调(新增数量)"
                                    />
                                    <van-field 
                                        type="digit"
                                        v-model="ele.juan"
                                        name="各方捐"
                                        label="各方捐(新增数量)"
                                    />
                                    <van-field
                                        type="textarea"
                                        v-model="ele.beizhu"
                                        name="备注"
                                        label="备注"
                                    />
                            </van-row>
                        </van-form>
                    </van-collapse-item>
                </van-collapse>

数据准备:

typelist:[
    {
        type:"医疗设备",
        data:[
            {name: "手持式红外线测温仪",name_id: "21",type: "医疗设备",type_id: "104"},
            {name: "手持式红外线测温仪",name_id: "21",type: "医疗设备",type_id: "104"},
            {name: "手持式红外线测温仪",name_id: "21",type: "医疗设备",type_id: "104"},
            {name: "手持式红外线测温仪",name_id: "21",type: "医疗设备",type_id: "104"}
        ]
    },
    {
        type:"医疗设备1",
        data:[
            {name: "手持式红外线测温仪",name_id: "21",type: "医疗设备1",type_id: "105"},
            {name: "手持式红外线测温仪",name_id: "21",type: "医疗设备1",type_id: "105"}
        ]
    }
   
]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甜甜凉白开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值