Vue2.0+ElementUI實現(xiàn)查詢條件展開和收起功能組件(代碼示例)
更新時間:2025年01月23日 11:12:18 作者:熱忱1128
文章介紹了如何將查詢條件表單封裝成一個通用組件,以提高開發(fā)效率,組件支持多條件的折疊和展開功能,并提供了使用示例,感興趣的朋友一起看看吧
一、需求
- el-form如果查詢條件過多,影響頁面的展示效果。
- 查詢條件表單是我們系統(tǒng)中非常常見的功能,我們需要把它封裝成一個通用的組件,方便在系統(tǒng)開發(fā)中提升開發(fā)效率。
- 除了在實現(xiàn)基本查詢條件的功能上,還需要實現(xiàn)多條件的折疊和展開功能
二、效果圖
三、 代碼示例
封裝查詢條件表單組件 SearchButton.vue
<template> <div> <el-col :span="1.5" class="elrow"> <el-form-item> <el-button type="primary" icon="el-icon-search" size="mini">查詢</el-button> </el-form-item> </el-col> <el-col :span="1.5" class="elrow"> <el-form-item> <el-button type="primary" icon="el-icon-refresh" size="mini">重置</el-button> </el-form-item> </el-col> <el-col :span="1.5" class="elrow"> <el-form-item> <el-button type="text" size="mini" @click="closeSearch"> {{ word }} <i :class="showAll ? 'el-icon-arrow-up ': 'el-icon-arrow-down'" /> </el-button> </el-form-item> </el-col> </div> </template> <script> export default { props: { showAll: { type: Boolean, defalut: true } }, computed: { word: function() { if (this.showAll === false) { // 對文字進行處理 return '展開搜索' } else { return '收起搜索' } } }, mounted() { /** * 收起搜索 */ this.$nextTick(function() { this.closeSearch() }) }, methods: { closeSearch() { // this.showAll = !this.showAll; this.$emit('closepop') console.log('子組件的狀態(tài):' + this.showAll) } } } </script> <style> </style>
使用查詢條件表單組件(引入組件即可)
<template> <div class="app-container"> <el-row :gutter="20"> <el-form ref="condForm" :model="condForm" label-width="100px" :inline="true"> <el-row class="btnRow"> <el-col :span="6" class="elrow"> <el-form-item label="線索編號1" prop="xsbh" style="padding-left: 10px;"> <el-input v-model="condForm.xsbh" size="mini" clearable style="width: 160px;" /> </el-form-item> </el-col> <el-col :span="6" class="elrow"> <el-form-item label="線索類型1" prop="xslx"> <el-select v-model="condForm.xslx" size="mini" style="width: 160px;"> <el-option v-for="item in xslxoptions" :key="item.id" :label="item.name" :value="item.id" /> </el-select> </el-form-item> </el-col> <el-col :span="6" class="elrow"> <el-form-item label="線索來源1" prop="xsxz"> <el-select v-model="condForm.xsxz" size="mini" style="width: 160px;"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </el-form-item> </el-col> <el-col :span="6" :class="!showAll ? 'btnRow' : 'unBtnRow'"> <el-form-item label="線索編號1" prop="xsbh" style="padding-left: 10px;"> <el-input v-model="condForm.xsbh" size="mini" clearable style="width: 160px;" /> </el-form-item> </el-col> <search-button v-show="showAll" :show-all="showAll" @closepop="closepop" /> </el-row> <el-row :class="!showAll ? 'btnRow' : 'unBtnRow'"> <el-col :span="6" class="elrow"> <el-form-item label="線索編號2" prop="xsbh" style="padding-left: 10px;"> <el-input v-model="condForm.xsbh" size="mini" clearable style="width: 160px;" /> </el-form-item> </el-col> <el-col :span="6" class="elrow"> <el-form-item label="線索類型2" prop="xslx"> <el-select v-model="condForm.xslx" size="mini" style="width: 160px;"> <el-option v-for="item in xslxoptions" :key="item.id" :label="item.name" :value="item.id" /> </el-select> </el-form-item> </el-col> <el-col :span="6" class="elrow"> <el-form-item label="線索來源2" prop="xsxz"> <el-select v-model="condForm.xsxz" size="mini" style="width: 160px;"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </el-form-item> </el-col> <el-col :span="6" class="elrow"> <el-form-item label="線索來源2" prop="xsxz"> <el-select v-model="condForm.xsxz" size="mini" style="width: 160px;"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </el-form-item> </el-col> <el-col :span="6" class="elrow"> <el-form-item label="線索來源2" prop="xsxz"> <el-select v-model="condForm.xsxz" size="mini" style="width: 160px;"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </el-form-item> </el-col> <el-col :span="6" class="elrow"> <el-form-item label="線索來源2" prop="xsxz"> <el-select v-model="condForm.xsxz" size="mini" style="width: 160px;"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </el-form-item> </el-col> <el-col :span="6" class="elrow"> <el-form-item label="線索來源2" prop="xsxz"> <el-select v-model="condForm.xsxz" size="mini" style="width: 160px;"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </el-form-item> </el-col> <el-col :span="6" class="elrow"> <el-form-item label="線索來源2" prop="xsxz"> <el-select v-model="condForm.xsxz" size="mini" style="width: 160px;"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </el-form-item> </el-col> <el-col :span="6" class="elrow"> <el-form-item label="線索來源2" prop="xsxz"> <el-select v-model="condForm.xsxz" size="mini" style="width: 160px;"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </el-form-item> </el-col> <el-col :span="6" class="elrow"> <el-form-item label="線索來源2" prop="xsxz"> <el-select v-model="condForm.xsxz" size="mini" style="width: 160px;"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </el-form-item> </el-col> <el-col :span="6" class="elrow"> <el-form-item label="線索來源2" prop="xsxz"> <el-select v-model="condForm.xsxz" size="mini" style="width: 160px;"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </el-form-item> </el-col> <el-col :span="6" class="elrow"> <el-form-item label="線索來源2" prop="xsxz"> <el-select v-model="condForm.xsxz" size="mini" style="width: 160px;"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </el-form-item> </el-col> <el-col :span="6" class="elrow"> <el-form-item label="線索來源2" prop="xsxz"> <el-select v-model="condForm.xsxz" size="mini" style="width: 160px;"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </el-form-item> </el-col> <SearchButton v-show="!showAll" :show-all="showAll" @closepop="closepop" /> </el-row> </el-form> </el-row> <el-table ref="multipleTable" :data="tableData" size="medium" :header-cell-style="{background:'#f5f7fa'}" :height="tableHeight" stripe fit highlight-current-row border style="width: 100%;height:50px" > <el-table-column type="selection" width="55" align="center" </el-table-column> <el-table-column type="index" width="55" align="center" label="序號" min-width="209" /> <el-table-column label="查看" width="60" align="center"> <template slot-scope="scope"> <el-button type="text" size="small" align="center">查看</el-button> </template> </el-table-column> <el-table-column label="刪除" width="60" align="center"> <template slot-scope="scope"> <el-button type="text" size="small" align="center">刪除</el-button> </template> </el-table-column> <el-table-column prop="jhbh" label="計劃編號" :show-overflow-tooltip="true" align="center" /> <el-table-column prop="xszt" label="狀態(tài)" align="center" min-width="100" /> </el-table-column></el-table> <!--分頁查詢工具條--> <el-col :span="24" class="toolbar"> <el-pagination style="margin-right: 8px;text-align: right;" :page-sizes="pageSizes" :page-size="pageSize" :total="totalPage" :current-page.sync="pageIndex" background layout="total, sizes, prev, pager, next, jumper" /> </el-col> </div> </template> <script> import SearchButton from '@/components/SearchButton/index.vue' export default { name: 'User', dicts: ['sys_normal_disable', 'sys_user_sex'], components: { SearchButton }, data() { return { showAll: true, tableData: [], // 查詢條件form condForm: {}, condition: '', xslxoptions: [{ id: '1', name: '土地' }, { id: '2', name: '房屋' }, { id: '3', name: '礦產(chǎn)' } ], options: [{ value: '1', label: '動態(tài)巡查' }, { value: '2', label: '電話舉報' }, { value: '3', label: '信訪舉報' }, { value: '4', label: '媒體曝光' }, { value: '5', label: '其他單位轉(zhuǎn)交' }, { value: '6', label: '其他' }], pageIndex: 0, pageSize: 0, pageSizes: [20, 50, 100, 200], totalPage: 0 // height: window.innerHeight - 200, } }, computed: { tableHeight() { if (this.showAll) { return window.innerHeight - 140 } else { return window.innerHeight - 200 } } }, methods: { closepop() { this.showAll = !this.showAll console.log('父組件的狀態(tài):' + this.showAll) } } } </script> <style> .btnRow { display: block; } .unBtnRow { display: none; } </style>
到此這篇關于Vue2.0+ElementUI實現(xiàn)查詢條件展開和收起功能組件的文章就介紹到這了,更多相關Vue ElementUI查詢條件展開和收起內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Vue+element自定義指令如何實現(xiàn)表格橫向拖拽
這篇文章主要介紹了Vue+element自定義指令如何實現(xiàn)表格橫向拖拽,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10解決vue更新路由router-view復用組件內(nèi)容不刷新的問題
今天小編就為大家分享一篇解決vue更新路由router-view復用組件內(nèi)容不刷新的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11