国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vben admin BasicTable 表格的進(jìn)階使用之帶搜索區(qū)域以及對(duì)于 useTable 中方法使用別名

這篇具有很好參考價(jià)值的文章主要介紹了vben admin BasicTable 表格的進(jìn)階使用之帶搜索區(qū)域以及對(duì)于 useTable 中方法使用別名。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


前言

很久之前看了下關(guān)于 vben 的基礎(chǔ)使用,最近項(xiàng)目需求開始用了,業(yè)務(wù)需要一個(gè)帶搜索區(qū)域的表格,今天寫完有點(diǎn)懵逼,來記錄的過程中整理下思路~~

這里是之前寫過的關(guān)于 vben admin BasicTable 表格的基本使用

一、上代碼

<template>
   <BasicTable @register="registerTable">
     <template #toolbar>
       <a-button type="primary" @click="exportData"> 數(shù)據(jù)導(dǎo)出 </a-button>
     </template>
   </BasicTable>
</template>
<script lang="ts" setup>
  import { BasicForm, FormSchema } from '/@/components/Form';
  import { BasicTable, useTable } from '/@/components/Table';
  import { getBasicColumns } from './details/tableData';
  import { reactive, ref, unref, watch, nextTick } from 'vue';
  import { getTowersInfo, towerLatestData } from '/@/api/bu/device/device';
  import { towerBillPage, exportTowerHistoryToExcel } from '/@/api/bu/device/towerBill';
 
  //這里是表格中搜索區(qū)域表單的配置,就和 FORM 的配置是一樣的
  const detailSearchForm: FormProps = {
    baseColProps: { lg: 6, md: 8 },
    labelWidth: 90,
    schemas: [
      {
        label: '工作類型',
        field: 'workType',
        component: 'Select',
        componentProps: {
          dictType: 'tower_bill_type',
        },
      },
      {
        label: '單據(jù)時(shí)間',
        field: 'startTime',
        component: 'RangePicker',
        componentProps: {
          format: 'YYYY-MM-DD HH:mm:ss',
        },
      },
    ],
  };
  const [registerTable, { reload, getForm }] = useTable({
    api: towerBillPage,
    beforeFetch: (params) => {
      params.deviceId = deviceId;
      return params;
    },
    afterFetch: (result) => {
    		// handleTowerHistory是自己寫的關(guān)于拿到返回?cái)?shù)據(jù)后進(jìn)行的一些處理的函數(shù)
      return handleTowerHistory(result);
    },
    columns: getBasicColumns(),
    showIndexColumn: false,
    useSearchForm: true,
    formConfig: detailSearchForm,
    showTableSetting: true,
    tableSetting: {
      // 是否顯示刷新按鈕
      redo: true,
      size: false,
      // 是否顯示字段調(diào)整按鈕
      setting: false,
      // 是否顯示全屏按鈕
      fullScreen: false,
    },
    canResize: true,
  });
  // 使用在表格插槽中放了一個(gè)按鈕,對(duì)應(yīng)的點(diǎn)擊事件,是用來下載文件的
  function exportData() {
    // getForm().resetFields()
    let data = getForm().getFieldsValue();
    exportTowerHistoryToExcel({ deviceId, createTime: data.startTime }).then((url) => {
      let fileName = url.slice(url.lastIndexOf('/') + 1);
      fetch(url)
        .then((res) => res.blob())
        .then((blob) => {
          const link = document.createElement('a');
          link.href = URL.createObjectURL(blob);
          // 下載文件的名稱及文件類型后綴
          link.download = fileName;
          document.body.appendChild(link);
          link.click();
          //在資源下載完成后 清除 占用的緩存資源
          window.URL.revokeObjectURL(link.href);
          document.body.removeChild(link);
        });
    });
  }
 </script >

二、上最終效果

vben組件庫(kù)basictable和usetable,前端框架,javascript,前端,vue.js

三、代碼分析

1.創(chuàng)建實(shí)例

我這里使用 useTable 的方式
如果需要開啟搜索區(qū)域,在 useTable 的配置過程中需要加上下面的配置項(xiàng)

useSearchForm boolean false 使用搜索表單
formConfig any 表單配置,參考表單組件的 Props

vben組件庫(kù)basictable和usetable,前端框架,javascript,前端,vue.js

2. 表格設(shè)置工具的配置

默認(rèn)表格的設(shè)置區(qū)域的樣式是這樣子的,但是實(shí)際上并不需要這些,只保留一個(gè)刷新就可以了
vben組件庫(kù)basictable和usetable,前端框架,javascript,前端,vue.js
配置項(xiàng)

showTableSetting	boolean	false	-	顯示表格設(shè)置工具	
tableSetting	TableSetting	-	-	表格設(shè)置工具配置,見下方 TableSetting

vben組件庫(kù)basictable和usetable,前端框架,javascript,前端,vue.js

2.使用 table 的插槽來放置按鈕

vben組件庫(kù)basictable和usetable,前端框架,javascript,前端,vue.js這里使用了 basic table 的插槽來實(shí)現(xiàn)的
vben組件庫(kù)basictable和usetable,前端框架,javascript,前端,vue.js

        <BasicTable @register="registerTable">
          <template #toolbar>
            <a-button type="primary" @click="exportData"> 數(shù)據(jù)導(dǎo)出 </a-button>
          </template>
        </BasicTable>

3.獲取搜索區(qū)域表單的值

業(yè)務(wù)需求,在點(diǎn)擊數(shù)據(jù)導(dǎo)出按鈕的時(shí)候,執(zhí)行 exportData() 函數(shù)需要發(fā)請(qǐng)求獲取對(duì)應(yīng)的文件 url 地址來實(shí)現(xiàn)下載功能
但是這個(gè)請(qǐng)求是需要帶表格搜索區(qū)域的時(shí)間條件作為參數(shù)的,所以我需要獲取到搜索表單中的數(shù)據(jù)
在官方文檔中可以看到,table 的 methods 中是有 getForm() 的
vben組件庫(kù)basictable和usetable,前端框架,javascript,前端,vue.jsvben組件庫(kù)basictable和usetable,前端框架,javascript,前端,vue.js
在 exportData() 方法中,調(diào)用 getForm() 方法,獲取到搜索表單實(shí)例對(duì)象
再調(diào)用 form 實(shí)例對(duì)象的getFieldsValue() 來獲取數(shù)據(jù)

 let data = getForm().getFieldsValue();
  function exportData() {
    // getForm().resetFields()
    let data = getForm().getFieldsValue();
    exportTowerHistoryToExcel({ deviceId, createTime: data.startTime }).then((url) => {
      let fileName = url.slice(url.lastIndexOf('/') + 1);
      fetch(url)
        .then((res) => res.blob())
        .then((blob) => {
          const link = document.createElement('a');
          link.href = URL.createObjectURL(blob);
          // 下載文件的名稱及文件類型后綴
          link.download = fileName;
          document.body.appendChild(link);
          link.click();
          //在資源下載完成后 清除 占用的緩存資源
          window.URL.revokeObjectURL(link.href);
          document.body.removeChild(link);
        });
    });
  }

4.實(shí)現(xiàn)在外部調(diào)用表單的 reload()

業(yè)務(wù)表單需要在某些時(shí)機(jī)來刷新,而不是手動(dòng)點(diǎn)擊表單設(shè)置工具區(qū)域的刷新按鈕,所以就需要表格實(shí)例對(duì)象的 reload() 方法
vben組件庫(kù)basictable和usetable,前端框架,javascript,前端,vue.js

  const [registerTableA, { reload, getForm }] = useTable({
    .....
  });

  reload();

這樣在需要刷新表單的時(shí)候執(zhí)行 reload 就可以了


遺留思考 (已解決)

如果一個(gè)頁(yè)面當(dāng)中有多個(gè)表單實(shí)例的話 , emmm 分別需要在兩個(gè)位置執(zhí)行這兩個(gè)表單的 reload()

如果出現(xiàn)下面的情況,怎樣區(qū)分 是哪個(gè)表單的 relaod 呢?
(盲猜測(cè)以下代碼會(huì)報(bào)錯(cuò) 畢竟出現(xiàn)了兩個(gè) reload 兩個(gè) getForm )

  const [registerTableA, { reload, getForm }] = useTable({
    .....
  });
  const [registerTableB, { reload, getForm }] = useTable({
 	  .....
  });
 

(繼續(xù)猜測(cè),沒時(shí)間驗(yàn)證,等真的遇到可以試試看? 主要還是對(duì) vue3 了解太差了) (驗(yàn)證過了,失敗)

  const [registerTableA, { reload as reloadA, getForm as getFormA }] = useTable({
    .....
  });
  const [registerTableB, { reload as reloadB, getForm  as getFormB }] = useTable({
 	  .....
  });
  reloadA();
  reloadB(); 

猜測(cè)失敗

//直接編譯失敗了
  const [registerTableA, { reload as reloadA, getForm as getFormA }] = useTable({
    .....
  });
  const [registerTableB, { reload as reloadB, getForm  as getFormB }] = useTable({
 	  .....
  });
  reloadA();
  reloadB(); 
// reloadA is not defined
  const [registerTableA, { reloadA :reload, getForm}] = useTable({
    .....
  });
  const [registerTableB, { reloadB :reload, getForm}] = useTable({
 	  .....
  });
  reloadA();
  reloadB(); 

解決方案

這里主要還是 ES6 解構(gòu)賦值的基本功了, 在 結(jié)構(gòu)賦值中變量命名沖突的問題,可以通過使用別名的方式來解決

// reloadA is not defined
  const [registerTableA, { reload :reloadA, getForm}] = useTable({
    .....
  });
  const [registerTableB, { reload :reloadB, getForm}] = useTable({
 	  .....
  });
  reloadA();
  reloadB(); 

總結(jié)

之前一直以為需要先通過給 table 或者 form 綁定 ref ,才能執(zhí)行到 reload() , getFieldsValues() … 方法,但是實(shí)際上這種方式獲取的好像是 DOM 對(duì)象,而不是實(shí)例對(duì)象
所以在 useTable 的時(shí)候?qū)?reload 寫進(jìn)去頁(yè)面中就會(huì)有 reload() 方法可以直接調(diào)用了文章來源地址http://www.zghlxwxcb.cn/news/detail-787297.html

到了這里,關(guān)于vben admin BasicTable 表格的進(jìn)階使用之帶搜索區(qū)域以及對(duì)于 useTable 中方法使用別名的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • naive-ui-admin BasicTable 列表操作欄顯示圖標(biāo)icon

    naive-ui-admin BasicTable 列表操作欄顯示圖標(biāo)icon

    效果圖 在使用BasicTable的頁(yè)面添加引用,這里隨便弄了個(gè)icon ?自定義列 ?這里label設(shè)置為空,icon就是剛剛導(dǎo)入的圖標(biāo),toolTip是自定義屬性,在原來封裝好的組件里添加的,不然只有一個(gè)圖標(biāo)可能不是很明確。 自定義的如下: 打開components/Table/src/components/TableAction.vue ,修改

    2024年04月08日
    瀏覽(28)
  • 管理后臺(tái)UI框架vue-vben-admin運(yùn)行

    管理后臺(tái)UI框架vue-vben-admin運(yùn)行

    Vue Vben Admin 是一個(gè)免費(fèi)開源的中后臺(tái)模版。使用了最新的vue3,vite2,TypeScript等主流技術(shù)開發(fā),開箱即用的中后臺(tái)前端解決方案,也可用于學(xué)習(xí)參考。 Github地址: https://github.com/anncwb/vue-vben-admin 文檔地址: https://vvbin.cn/doc-next/ Tailwind CSS Ant Design Vue 2.0 node 和 git -項(xiàng)目開發(fā)環(huán)境 Vi

    2024年02月06日
    瀏覽(24)
  • yudao-ui-admin-vben管理后臺(tái):基于最新vben 框架的企業(yè)級(jí)管理后臺(tái)應(yīng)用解決方案

    yudao-ui-admin-vben管理后臺(tái):基于最新vben 框架的企業(yè)級(jí)管理后臺(tái)應(yīng)用解決方案

    摘要: 本文主要介紹了yudao-ui-admin-vben管理后臺(tái),一個(gè)基于最新vben 框架的企業(yè)級(jí)管理后臺(tái)應(yīng)用解決方案。文章首先概述了yudao-ui-admin-vben管理后臺(tái)的技術(shù)棧和功能特點(diǎn),然后深入探討了其架構(gòu)設(shè)計(jì)、核心模塊實(shí)現(xiàn)以及性能優(yōu)化等方面的技術(shù)細(xì)節(jié)。最后,文章總結(jié)了yudao-ui-admi

    2024年04月27日
    瀏覽(28)
  • vben-admin 頁(yè)面以及部分代碼 常見問題 解析 持續(xù)更新····

    vben-admin 頁(yè)面以及部分代碼 常見問題 解析 持續(xù)更新····

    介紹 | Vben Admin (vvbin.cn) https://doc.vvbin.cn/guide/introduction.html ----------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------- ?

    2024年02月04日
    瀏覽(51)
  • vue-vben-admin 與.net core 結(jié)合實(shí)例 【自學(xué)與教學(xué) 小白教程】---第4節(jié)---部門管理

    vue-vben-admin 與.net core 結(jié)合實(shí)例 【自學(xué)與教學(xué) 小白教程】---第4節(jié)---部門管理

    ?ue-vben-admin 與.net core 結(jié)合實(shí)例 這里計(jì)劃使用.net core 作為后端 。目標(biāo):打造好看 易用 開箱即用 的netcore一體化框架。Vue Vben Admin For NetCore 取命 hcrain-vvadmin 我不是前端人員 但有時(shí)開發(fā)還是要寫一些界面。 之前使用layui是時(shí)候 狠心升級(jí)下了。 只為了好看----------于是 ?小白教

    2024年01月16日
    瀏覽(20)
  • 【Vue】Vue 使用 Print.js 打印選中區(qū)域的html,用到的是Element ui table表格,解決頁(yè)面樣式不出現(xiàn)或者table表格樣式錯(cuò)亂問題?。?!

    【Vue】Vue 使用 Print.js 打印選中區(qū)域的html,用到的是Element ui table表格,解決頁(yè)面樣式不出現(xiàn)或者table表格樣式錯(cuò)亂問題?。?!

    需求 : 打擊打印按鈕,文字內(nèi)容以及表格中的內(nèi)容 解決方案 加上這句就好了!完美! 一、因?yàn)楸砀駭?shù)據(jù)過多,之前加了表格滾動(dòng)條,但是打印出來 會(huì)把表格上的滾動(dòng)條也打印出來,所以這里改成了 給彈框加滾動(dòng)條,去掉表格中的滾動(dòng)條 2.1 原因: table-layout: fixed導(dǎo)致的,

    2024年02月09日
    瀏覽(22)
  • Django admin管理工具TabularInline表格內(nèi)聯(lián)

    Django admin管理工具TabularInline表格內(nèi)聯(lián)

    TabularInline 是 Django Admin 中的一個(gè)內(nèi)聯(lián)模型選項(xiàng),用于在父模型的編輯頁(yè)面中以表格形式顯示關(guān)聯(lián)的子模型對(duì)象。下面是對(duì) TabularInline 的一些詳解: 顯示方式 : TabularInline 以表格的形式顯示子模型對(duì)象。每個(gè)子模型對(duì)象將以一行的形式展示,顯示相關(guān)字段的值。 編輯和新增

    2024年02月16日
    瀏覽(17)
  • 常用的表格檢測(cè)識(shí)別方法 - 表格區(qū)域檢測(cè)方法(下)

    ——書接上文 ? Training 半監(jiān)督網(wǎng)絡(luò)的訓(xùn)練分兩步進(jìn)行:a)對(duì)標(biāo)記數(shù)據(jù)獨(dú)立訓(xùn)練學(xué)生模塊,由教師模塊生成偽標(biāo)簽;b)結(jié)合兩個(gè)模塊的訓(xùn)練,得到最終的預(yù)測(cè)結(jié)果。 ? 偽標(biāo)簽框架 ? ? 實(shí)驗(yàn) ? 數(shù)據(jù)集: TableBank是文檔分析領(lǐng)域中用于表識(shí)別問題的第二大數(shù)據(jù)集。該數(shù)據(jù)集有417,00

    2024年02月05日
    瀏覽(35)
  • 常用的表格檢測(cè)識(shí)別方法-表格區(qū)域檢測(cè)方法(上)

    ? ? ? 表格檢測(cè)識(shí)別一般分為三個(gè)子任務(wù):表格區(qū)域檢測(cè)、表格結(jié)構(gòu)識(shí)別和表格內(nèi)容識(shí)別。本章將圍繞這三個(gè)表格識(shí)別子任務(wù),從傳統(tǒng)方法、深度學(xué)習(xí)方法等方面,綜述該領(lǐng)域國(guó)內(nèi)國(guó)外的發(fā)展歷史和最新進(jìn)展,并提供幾個(gè)先進(jìn)的模型方法。 ? 3.1 表格區(qū)域檢測(cè)方法 ? 表格檢測(cè)

    2024年02月05日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包