zoukankan      html  css  js  c++  java
  • Vue 表格里的下拉列表

    下拉列表column-select.vue组件内容:

    <template>
        <div class="column-select-wrapper">
            <div v-show="!selectShow" class="column-text-container">
                {{modalLabel}}
            </div>
            <Select v-show="selectShow" label-in-value :value="initValue" @on-change="valCHange">
                 <Option v-for="(item, index) in options" :key="index" :value="item[valueKey]">{{item[labelKey]}}</Option>
            </Select>
        </div>
    </template>
    
    <script type="text/ecmascript-6">
        /**
         * 表行select组件
         */
        export default {
            name: 'column-select',
            data() {
                return {
                }
            },
            props: {
                initValue: {
                    type: [String, Number],
                    default: ''
                },
                options: {
                    type: Array,
                    required: true
                },
                //0显示状态  1编辑状态
                status: {
                    type: Number,
                    default: 1
                },
                valueKey: {
                    type: String,
                    default: 'value'
                },
                labelKey: {
                    type: String,
                    default: 'label'
                }
            },
            computed: {
                selectShow() {
                    return this.status === 1;
                },
                modelLabel() {
                    let node = this.options.find((item) => {
                        return item[this.valueKey] === this.initValue;
                    });
                    if(node) {
                        return node[this.labelKey];
                    } else {
                        return '';
                    }
                }
            },
            methods: {
                valChange(selectOption) {
                    if(selectOption) {
                        this.$emit('update', selectOption.value);
                    }
                }
            }
        }
    <script>
    
    <style scoped lang="less">
        .column-select-wrapper {
            .column-text-container {
                height: .36rem;
                line-height: .36rem;
                 100%;
            }
            /deep/ .ivu-select {
                position: static;
            }
        }
    </script>

    调用column-select.vue文件的list.config.js文件内容(表格列表文件):

    import columnSelect from './column-select';
    
    export default (ctx) => {
        return {
                title: '序号',
                align: 'center',
                key: 'number'
            },{
                title: '列表',
                align: 'center',
                render(h, { row }) {
                    return h(columnSelect, {
                        props: {
                            initValue: row.teamCode,
                            status: row.status,
                            options: ctx.list,
                            labelKey: 'teamName',
                            valueKey: 'teamCode'
                        },
                        on: {
                            update(teamCode) {
                                ctx.updateRow(row, 'teamCode', teamCOde);
                            }
                        }
                    });
                }
            }
        ]
    };

    调用list.config.js文件的表格显示文件index.vue:

    <template>
        <div class="list-container">
            <Table :columns="column" :data="listData" stripe />
        </div>
    </template>
    
    <script>
        import column from './list.config.js';
        export default {
            data() {
                return {
                    teamTypeList: [{
                        teamCode: "1",
                        teamName: "aaa"
                    },{
                        teamCode: "2",
                        teamName: "bbb"
                    },{
                        teamCode: "3",
                        teamName: "ccc"
                    },{
                        teamCode: "4",
                        teamName: "ddd"
                    }],
                    listData: [{
                        teamCode: '12',
                        teamName: 'qqq'
                    }]
                }
            },
            methods: {
                //更新该行数据字段
                updateRow(row, key, value) {
                    this.listData[row._index][key] = value;
                }
            }
        }
    </script>
  • 相关阅读:
    webStrom 注释模板添加
    匹配正则 url 端口 域名
    监测数据类型封装方法
    base64图片展示(后端给base64数据,前端展示图片)
    倒计时
    机密16位
    mvc与mvvm的区别
    flex表格的使用
    flex中tab页面的实现
    flex中下拉框的实现
  • 原文地址:https://www.cnblogs.com/minozMin/p/9830903.html
Copyright © 2011-2022 走看看