想直接用下拉選擇器實現(xiàn)表格的篩選,不是使用elementUI的表頭篩選,請問該怎么實現(xiàn)??
<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ù),使用第二種方式。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務(wù)負責iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。