循序漸進VUE+Element 前端應用開發(29)--- 高級查詢條件的界面設計


在系統模塊中的業務列表展示里面,一般我們都會在列表中放置一些查詢條件,如果是表字段不多,大多數情況下,放置的條件有十個八個就可以了,如果是字段很多,而這些條件信息也很關鍵的時候,就可能放置很多條件,但是界面空間比較有限,而常規的查詢一般就那么幾個常用條件,如果每次都占用很多版面,好像不是很合理和友好。本篇隨筆探討Vue+Element前端界面中處理高級查詢模塊的界面設計,提供了兩種處理的思路供參考借鑒。

1、彈出框的高級查詢條件的界面設計

 如常規的列表界面如下所示。

單擊【高級查詢】彈出一個新對話框窗口,里面可以查看到所有的查詢條件

 我們來一段動畫效果,操作界面的動態效果如下所示。

 

這里我為了降低單頁面的代碼量,把高級查詢模塊的代碼抽取到一個獨立的文件中,然后在主體頁面中引入使用。

    <testproduct-advance
      ref="advancesearch"
      @search="advanceSearch"
    />

 我們在彈出高級查詢對話框中,執行查詢的時候,會獲得條件對象,然后通過事件的方式給調用頁面

    async handleSearch() { // 表單提交
      this.isVisible = false;
      this.$emit('search', this.searchForm)
    },

在主頁面里面,會對高級查詢的幾個事件進行處理,如打開窗口,確定高級查詢后觸發查詢。

  methods: {
    advanceSearch(searchObj) { // 高級查詢
      // console.log(searchObj)
      this.advanceSearchForm = searchObj;
      this.msgSuccess('已選擇高級查詢條件進行查詢了')
      this.isAdvanceSeach = false // 關閉高級查詢窗口
      this.getlist()
    },
    onResetAdvance(searchObj) { // 重置高級查詢條件
      // console.log(searchObj)
      this.advanceSearchForm = searchObj;
    },
    showAdvanceForm() { // 顯示自定義的高級查詢對話框
      this.$refs.advancesearch.show()
    },

在getlist函數里面,需要對高級查詢對象進行轉換處理

    getlist() { // 列表數據獲取
      // 如果高級查詢對象非空,則采用高級查詢條件
       var form = this.isEmpty(this.advanceSearchForm) ? this.searchForm : this.advanceSearchForm; var param = { // 構造常規的分頁查詢條件
        // 分頁條件
        SkipCount: (this.pageinfo.pageindex - 1) * this.pageinfo.pagesize,
        MaxResultCount: this.pageinfo.pagesize,

        // 查詢過濾條件
        ProductNo: form.productNo,
        BarCode: form.barCode,
        MaterialCode: form.materialCode,
        ProductType: form.productType,
        ProductName: form.productName,
        Status: form.status
      }

      .............

不過,由於高級查詢和普通的查詢界面代碼有很多重復的地方,因此這樣做感覺也相對比較啰嗦。 

下面的思路就折疊的方案進行討論。

 

2、折疊式的高級查詢條件的界面設計

這個思路來自於AntDesign的查詢條件展示,默認它是基於常規條件的展示,如果展開則展示更多的條件。

單擊【展開】則展開更多的條件,以供查詢。

借鑒了這個方式,我們也可以使用這樣的折疊方式來隱藏更多的查詢條件,從而也使得不常用的條件默認隱藏起來,提高界面的友好性。

 

 

 這樣折疊的條件和不折疊的條件在一個表單里面,只是通過一個狀態的切換隱藏部分條件而已,雖然界面代碼多增加一些,不過處理卻變得簡單一些,不需要單獨編寫一個高級查詢的條件組件頁面。

界面代碼大致布局如下所示。

 

這樣我們通過一個條件按鈕來切換它的狀態即可實現常用條件、高級查詢條件的切換顯示了。

<el-button :icon="expandMore ?'el-icon-arrow-up':'el-icon-arrow-down'" type="text" @click="expandMore =!expandMore">{{ expandMore ? '收起':'展開' }}</el-button>

這樣查詢處理,並不需要變化什么特殊的操作了,和常規操作一樣,只不過多一些條件而已。

    getlist() { // 列表數據獲取
      var param = { // 構造常規的分頁查詢條件
        // 分頁條件
        SkipCount: (this.pageinfo.pageindex - 1) * this.pageinfo.pagesize,
        MaxResultCount: this.pageinfo.pagesize,

        // 查詢過濾條件
        Name: this.searchForm.name,
        Sex: this.searchForm.sex,
        .............

        State: this.searchForm.state
      };
      // 使用日期范圍選擇控件,在查詢對象增加開始日期CreationTimeStart、結束日期CreationTimeEnd
      this.addDateRange(param, this.searchForm.creationTime)

      // 獲取列表,綁定到模型上,並修改分頁數量
      this.listLoading = true
      testUser.GetAll(param).then(data => {
        this.list = data.result.items
        this.pageinfo.total = data.result.totalCount
        this.listLoading = false
      })
    },

以上就是兩種不同高級查詢條件的界面設計,一般來說,我傾向於使用后者來實現,這樣界面效果也比較完整統一。

 

為了方便讀者理解,我列出一下前面幾篇隨筆的連接,供參考:

循序漸進VUE+Element 前端應用開發(1)--- 開發環境的准備工作

循序漸進VUE+Element 前端應用開發(2)--- Vuex中的API、Store和View的使用

循序漸進VUE+Element 前端應用開發(3)--- 動態菜單和路由的關聯處理

循序漸進VUE+Element 前端應用開發(4)--- 獲取后端數據及產品信息頁面的處理

循序漸進VUE+Element 前端應用開發(5)--- 表格列表頁面的查詢,列表展示和字段轉義處理

循序漸進VUE+Element 前端應用開發(6)--- 常規Element 界面組件的使用

循序漸進VUE+Element 前端應用開發(7)--- 介紹一些常規的JS處理函數

循序漸進VUE+Element 前端應用開發(8)--- 樹列表組件的使用

循序漸進VUE+Element 前端應用開發(9)--- 界面語言國際化的處理

循序漸進VUE+Element 前端應用開發(10)--- 基於vue-echarts處理各種圖表展示 

循序漸進VUE+Element 前端應用開發(11)--- 圖標的維護和使用

循序漸進VUE+Element 前端應用開發(12)--- 整合ABP框架的前端登錄處理

循序漸進VUE+Element 前端應用開發(13)--- 前端API接口的封裝處理

循序漸進VUE+Element 前端應用開發(14)--- 根據ABP后端接口實現前端界面展示

循序漸進VUE+Element 前端應用開發(15)--- 用戶管理模塊的處理

循序漸進VUE+Element 前端應用開發(16)--- 組織機構和角色管理模塊的處理 

循序漸進VUE+Element 前端應用開發(17)--- 菜單管理

循序漸進VUE+Element 前端應用開發(18)--- 功能點管理及權限控制  

VUE+Element 前端應用開發框架功能介紹 

循序漸進VUE+Element 前端應用開發(19)--- 后端查詢接口和Vue前端的整合

使用代碼生成工具快速生成基於ABP框架的Vue+Element的前端界面

循序漸進VUE+Element 前端應用開發(20)--- 使用組件封裝簡化界面代碼

循序漸進VUE+Element 前端應用開發(21)--- 省市區縣聯動處理的組件使用

循序漸進VUE+Element 前端應用開發(22)--- 簡化main.js處理代碼,抽取過濾器、全局界面函數、組件注冊等處理邏輯到不同的文件中

循序漸進VUE+Element 前端應用開發(23)--- 基於ABP實現前后端的附件上傳,圖片或者附件展示管理 

循序漸進VUE+Element 前端應用開發(24)--- 修改密碼的前端界面和ABP后端設置處理

循序漸進VUE+Element 前端應用開發(25)--- 各種界面組件的使用(1)

循序漸進VUE+Element 前端應用開發(26)--- 各種界面組件的使用(2)

電商商品數據庫的設計和功能界面的處理 

循序漸進VUE+Element 前端應用開發(27)--- 數據表的動態表單設計和數據存儲

循序漸進VUE+Element 前端應用開發(28)--- 附件內容的管理 

循序漸進VUE+Element 前端應用開發(29)--- 高級查詢條件的界面設計

部署基於.netcore5.0的ABP框架后台Api服務端,以及使用Nginx部署Vue+Element前端應用

循序漸進VUE+Element 前端應用開發(30)--- ABP后端和Vue+Element前端結合的分頁排序處理 

循序漸進VUE+Element 前端應用開發(31)--- 系統的日志管理,包括登錄日志、接口訪問日志、實體變化歷史日志

循序漸進VUE+Element 前端應用開發(32)--- 手機短信動態碼登陸處理 

循序漸進VUE+Element 前端應用開發(33)--- 郵件參數配置和模板郵件發送處理 

使用代碼生成工具快速開發ABP框架項目 

使用Vue-TreeSelect組件實現公司-部門-人員級聯下拉列表的處理 

使用Vue-TreeSelect組件的時候,用watch變量方式解決彈出編輯對話框界面無法觸發更新的問題 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM