在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 如何用下拉選擇器過濾表格?

如何用下拉選擇器過濾表格?

想直接用下拉選擇器實現(xiàn)表格的篩選,不是使用elementUI的表頭篩選,請問該怎么實現(xiàn)??

clipboard.png

<template>
    <div class="child-page-toolbar">
        <div class="line"></div>

        <span slot="title">狀態(tài)</span>
        <el-select v-model="selectState" placeholder="請選擇工單狀態(tài)" @change="StateChange">
            <el-option
                    v-for="item in state"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value">
            </el-option>
        </el-select>

        <span slot="title">分類</span>
        <el-select v-model="selectSort" placeholder="請選擇工單類別" @change="SortChange">
            <el-option
                    v-for="item in sort"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value">
            </el-option>
        </el-select>

        <el-date-picker
                v-model="selectDate"
                type="daterange"
                align="right"
                unlink-panels
                range-separator="至"
                start-placeholder="開始日期"
                end-placeholder="結(jié)束日期"
                :picker-options="pickerOptions" @change="dateChange">
        </el-date-picker>



        <el-table :data="tableData"
                  style="width: 100%"
                  :default-sort = "{prop: 'submitTime', order: 'ascending'}">
            <el-table-column
                    prop="orderNum"
                    label="工單號"
                    sortable
                    width="180">
            </el-table-column>
            <el-table-column
                    prop="orderSort"
                    label="分類"
                    width="180">
            </el-table-column>
            <el-table-column
                    prop="orderTitle"
                    label="標題">
            </el-table-column>
            <el-table-column
                    prop="orderDescribe"
                    label="描述"
                    width="180">
            </el-table-column>
            <el-table-column
                    prop="orderState"
                    label="狀態(tài)"
                    width="180">
            </el-table-column>
            <el-table-column
                    prop="submitTime"
                    label="提交時間"
                    sortable>
            </el-table-column>
            <el-table-column
                    prop="endTime"
                    label="截止時間"
                    sortable
                    width="180">
            </el-table-column>
            <el-table-column
                    fixed="right"
                    label="操作">
                <template slot-scope="scope">
                    <el-button @click="handleDetail(scope.$index, scope.row)" type="text" size="small">詳情</el-button>
                    <el-button @click="handleEdit(scope.$index, scope.row)" type="text" size="small">編輯</el-button>
                    <el-button @click="handleDelete(scope.$index, scope.row)" type="text" size="small">刪除</el-button>
                </template>
            </el-table-column>
        </el-table>
    </div>
</template>
<script>
    export default {
        data() {
            return {
                state: [{
                    value: '0',
                    label: '全部工單'
                }, {
                    value: '1',
                    label: '未處理'
                }, {
                    value: '2',
                    label: '處理中'
                }, {
                    value: '3',
                    label: '已處理'
                }, {
                    value: '4',
                    label: '已結(jié)單'
                }],
                sort: [{
                    value: '0',
                    label: '全部工單'
                }, {
                    value: '1',
                    label: '文案類'
                }, {
                    value: '2',
                    label: '設(shè)計類'
                }, {
                    value: '3',
                    label: '開發(fā)類'
                }, {
                    value: '4',
                    label: '采購類'
                }, {
                    value: '5',
                    label: '其他類'
                }],
                selectState: '',
                selectSort:'',


                //日期選擇器
                pickerOptions: {
                    shortcuts: [{
                        text: '最近一周',
                        onClick(picker) {
                            const end = new Date();
                            const start = new Date();
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
                            picker.$emit('pick', [start, end]);
                        }
                    }, {
                        text: '最近一個月',
                        onClick(picker) {
                            const end = new Date();
                            const start = new Date();
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
                            picker.$emit('pick', [start, end]);
                        }
                    }, {
                        text: '最近三個月',
                        onClick(picker) {
                            const end = new Date();
                            const start = new Date();
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
                            picker.$emit('pick', [start, end]);
                        }
                    }]
                },
                selectDate: '',

                //表格數(shù)據(jù)
                tableData: [{
                    orderNum: '1',
                    orderSort: '開發(fā)',
                    orderTitle: 'BUG測試',
                    orderDescribe:'BUG測試描述',
                    orderState:'處理中',
                    submitTime:'2017.01.10 02:33',
                    endTime:'2017.02.10 02:33'
                }, {
                    orderNum: '2',
                    orderSort: '開發(fā)',
                    orderTitle: 'BUG測試',
                    orderDescribe:'BUG測試描述',
                    orderState:'處理中',
                    submitTime:'2017.01.11 02:33',
                    endTime:'2017.02.09 02:33'
                }, {
                    orderNum: '3',
                    orderSort: '開發(fā)',
                    orderTitle: 'BUG測試',
                    orderDescribe:'BUG測試描述',
                    orderState:'處理中',
                    submitTime:'2017.01.12 02:33',
                    endTime:'2017.02.08 02:33'
                }, {
                    orderNum: '4',
                    orderSort: '開發(fā)',
                    orderTitle: 'BUG測試',
                    orderDescribe:'BUG測試描述',
                    orderState:'處理中',
                    submitTime:'2017.01.09 02:33',
                    endTime:'2017.02.07 02:33'
                }, {
                    orderNum: '5',
                    orderSort: '開發(fā)',
                    orderTitle: 'BUG測試',
                    orderDescribe:'BUG測試描述',
                    orderState:'處理中',
                    submitTime:'2017.01.08 02:33',
                    endTime:'2017.02.06 02:33'
                }, {
                    orderNum: '6',
                    orderSort: '開發(fā)',
                    orderTitle: 'BUG測試',
                    orderDescribe:'BUG測試描述',
                    orderState:'處理中',
                    submitTime:'2017.01.15 02:33',
                    endTime:'2017.02.05 02:33'
                }]
            }
        },
        filter:{

        },
        methods: {
            StateChange(value) {
                console.log(value);
                if(value === 2){

                }
            },
            SortChange(value){
                console.log(value);
            },

            dateChange(value){
                console.log(value);
            },
            handleSelect(key, keyPath) {
                console.log(key, keyPath);
            },
            handleClick(row) {
                console.log(row);
            },
            handleDetail(index,row){
                location.href = "/personal/detail"
            },
            handleEdit(index,row){
                location.href = "/createOrder/new"
            },
            handleDelete(index,row){
                this.$confirm('此操作將永久刪除該文件, 是否繼續(xù)?', '提示', {
                    confirmButtonText: '確定',
                    cancelButtonText: '取消',
                    type: 'warning'
                }).then(() => {
                    this.$message({
                        type: 'success',
                        message: '刪除成功!'
                    });
                }).catch(() => {
                    this.$message({
                        type: 'info',
                        message: '已取消刪除'
                    });
                });
            }
        }
    }
</script>
回答
編輯回答
貓館

1.篩選條件的change事件對應(yīng)的事件只要寫一個方法就可以了,如changeSelect,因為過濾不止要兼顧當前選擇的過濾條件,還要兼顧其他選擇的選項,如現(xiàn)在選了分類,但之前選過的狀態(tài)也得保留。
2.一般如果數(shù)據(jù)量比較大的話,篩選條件是要作為參數(shù)傳給后臺,后臺過濾之后返回給前臺渲染即可,畢竟服務(wù)器的處理速度比瀏覽器的處理速度快的不止一丟丟
3.假如需要前臺渲染,拿到所有數(shù)據(jù)以后,在changeSelect方法中,首先獲取所有過濾項的值,也就是v-model所綁定的值,舉個例子,過濾了state為處理中且分類是開發(fā)的話,那就在表格數(shù)據(jù)渲染的時候(假如從后臺拿到的數(shù)據(jù)數(shù)組為res),判斷res[i].state==this.selectState&&res[i].sort==this.selectSort的話將數(shù)據(jù)放到表格數(shù)據(jù)中進行渲染,否則不渲染。
建議過濾項讓后臺提供篩參數(shù),使用第二種方式。

2018年1月14日 16:55
編輯回答
近義詞

@loje 你數(shù)據(jù)是來自后端api吧,問后端傳什么參數(shù)就可以了,change后用axios發(fā)ajax請求啊

2017年7月28日 10:27
編輯回答
孤島

vue的數(shù)據(jù)都是綁定的,數(shù)據(jù)變了展示的內(nèi)容就跟著變了,下拉菜單有一個change事件,可以根據(jù)選中的值去改變下面表格中綁定的數(shù)據(jù)內(nèi)容,數(shù)據(jù)一旦變化,內(nèi)容會自動更新,就是這思路,若不懂,可評論告訴我,我給你代碼實現(xiàn)一下,現(xiàn)在不寫是因為那么多內(nèi)容,難寫呀^_^ ^_^

2017年5月10日 10:57