前端獲取接口數據流程

一、Free-Table組件分析

<free-table
? v-show="showTable"
? v-model:page="params.pageNum"? ? ?
雙向綁定當前頁大小,支持動態更新
? v-model:limit="params.pageSize"? ? ?雙向綁定每頁大小,支持動態更新
? v-loading="tableLoading"? ??顯示加載動畫
? :data="tableList"? ? ?綁定表格數據
? :column="realTableColumn"? ??定義表格列的配置
? :total="total"? ??數據總條數,用于計算分頁頁數
? :page-size="params.pageSize"? ??每頁顯示的條數
? :height="tableHeight"? ??設置表格高度(需自定義數值)
? :header-cell-style="{ background: '#F9F9FA' }"? ?自定義表頭單元格的樣式。
? :class="densityClass"? ?動態綁定表格樣式類,支持表格密度切換
? pagination? ??啟用分頁功能
? border? ?啟用表格邊框
? stripe? ??啟用斑馬紋樣式
? @pagination="getTableList"? ??分頁控件觸發時調用的方法,通常用于重新加載數據
/>

二、組件初始化階段

1、初始化響應式狀態對象:tablebody。

2、核心狀態:

  • 表格高度 ( tableHeight )

  • 數據加載狀態 ( tableLoading )

  • 表格數據 ( tableList )

  • 總條數 ( total )

  • 分頁參數 ( params ):設置默認分頁參數。(第1頁,每頁50條)

const tableBody = reactive<stateType>({tableHeight: 600,showTable: true,tableLoading: false,tableList: [],total: 0,params: {pageNum: 1,pageSize: 50,  // 默認每頁50條},
});

三、表單和表格配置

1、表單字段:

通過 getFormFields 獲取表單配置:

const formDataModel = reactive({});const formData = computed(() => ({showButtons: false,confirmText: '查詢',model: formDataModel,  // 綁定表單數據模型fields: getFormFields(),  // 獲取表單字段配置
}));

getFormFields() 返回的表單配置:

[{ prop: 'dw', type: 'input', placeholder: '單位' },{ prop: 'yd', type: 'datePicker', placeholder: '月度' }
]

2、表格列

通過 getTableColumn 獲取表格列配置:

const tableColumn = getTableColumn();

四、組件掛載自動加載數據

onMounted(init);  // 組件掛載時觸發數據加載
const init = () => {getTableList();
};

五、核心數據獲取方法

const getTableList = async () => {try {tableBody.tableLoading = true;// 合并分頁參數和表單參數const params = {...tableBody.params,...formDataModel};const res: any = await getInfoApi(params);if (res.status === 200) {tableBody.tableList = res.data.records || [];tableBody.total = res.data.total ? Number(res.data.total) : 0;} else {ElMessage.warning(res.message);}} finally {tableBody.tableLoading = false;}
};

注:其中 res.status 的 status 為狀態名,

不同接口可能會有不同的狀態名(如code等),所以需要根據不同情況進行修改?。

1、參數合并策略

const params = {...tableBody.params,  // 分頁參數 { pageNum: 1, pageSize: 50 }...formDataModel      // 表單參數 { dw: '單位A', yd: ['2023-01', '2023-06'] }
};

合并后的請求參數示例:

{"pageNum": 1,"pageSize": 50,"dw": "單位A","yd": ["2023-01", "2023-06"]
}

2、多種解構方式?

功能/解構方式直接解構:data.rows對象訪問:res.data.rows
API調用

const { data, code, message }

= await pageApi(params);

const res: any

= await getInfoApi(params);

狀態碼檢查if (code === 200)?if (res.status === 200)?
數據賦值tableBody.tableList = data.rows;tableBody.tableList = res.data.records;

3、響應數據處理

1.直接賦值

特點:保持原始結構 + 分頁信息。

其中records要與接口返回的數組名一致。

如若是"list": [...],那么就得是res.data.list。

tableBody.tableList = res.data.records || [];  // 表格數據
tableBody.total = Number(res.data.total) || 0; // 總數

假設后端返回數據結構:?

{"status": 200,"data": {"records": [...],  // 當前頁數據"total": 1250      // 總記錄數}
}

2.字段映射

特點:必須轉換 + 空安全

orgTypeList.value = (data as OrgItem[]).map(item => ({label: item.name,value: item.id,

?轉換過程:

// 原始數據
[{ name: "米哈油", id: "org-001" }]
// 轉換后(丟棄id,保留label/value)
[{ label: "米哈油", value: "org-001" }]

為什么一定要轉換為 { label, value } 格式?

  1. 適配 UI 組件的數據格式
  2. 統一處理邏輯
  3. 減少不必要的數據處理
  4. 清晰分離顯示值與存儲值

在少數簡單場景下可以直接使用原始數據:

  • 純字符串/數字的簡單列表
  • 組件明確支持自定義字段映射

六、用戶交互觸發點

1、查詢按鈕

const submitHandler = () => {console.log('Form Data Model:', formDataModel);init();  // 觸發數據加載
};

2、數據統計按鈕

const dataStatistics = () => {init();  // 同樣觸發數據加載
};

3、表格刷新/分頁

注:該代碼所在文件位置:index.vue。

<!-- Template中 -->
<table-operate @on-refresh="getTableList"/>
<free-table @pagination="getTableList"/>

七、動態列顯示?

按需求選擇哪些列顯示,哪些列不顯示。

1. 表格操作組件引用index

<table-operate ref="tableOperateRef" :table-column="tableColumn"@on-refresh="getTableList">
</table-operate>

2. 動態列計算屬性hooks

const realTableColumn = computed(() => tableOperateRef.value?.realTableColumn ?? []
);

3. 表格組件綁定index

<free-table :column="realTableColumn"></free-table>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/86335.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/86335.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/86335.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux系統防火墻之iptables

防火墻在一個系統中就好像是一個國家的軍隊&#xff0c;所謂國無軍不安&#xff0c;在系統中也是這樣&#xff0c;防火墻可以保護系統被別人攻擊&#xff0c;過濾垃圾流量等&#xff0c;那么今天我們就來了解一下Linux系統中的一種防火墻iptables。 目錄 iptables概述 規則 …

vue項目使用svg圖標

下面是在 Vue 3 項目中完整引入和使用 vite-plugin-svg-icons 的步驟 1、安裝插件 npm install vite-plugin-svg-icons -D # 或 yarn add vite-plugin-svg-icons -D # 或 pnpm add vite-plugin-svg-icons -D 2、配置 Vite 在 vite.config.ts 或 vite.config.js 中配置&…

元器件基礎學習筆記——結型場效應晶體管 (JFET)

場效應晶體管&#xff08;Field Effect Transistor&#xff0c;FET&#xff09;簡稱場效應管&#xff0c;是一種三端子半導體器件&#xff0c;它根據施加到其其中一個端子的電場來控制電流的流動。與雙極結型晶體管 &#xff08;BJT&#xff09; 不同&#xff0c;場效應晶體管 …

拆解實戰案例:電商ERP管理系統從需求到原型全流程設計

ERP即企業資源計劃系統&#xff0c;全稱為Enterprise Resource Planning&#xff0c;其核心在于運用系統化管理思想&#xff0c;為企業員工及管理層構建一個提供決策支持的管理系統平臺。它匯聚貫通企業各個業務模塊產生的數據流&#xff0c;實現資源配置與業務流程高效協同。尤…

【面試題】如何保證MQ的消息不丟失、不重復

文章目錄 一、消息丟失問題的解決方案&#xff08;一&#xff09;發送端丟失&#xff08;二&#xff09;存儲端丟失1. 同步刷盤2. Broker 集群 &#xff08;三&#xff09;消費端丟失 二、消息重復問題的解決方案&#xff08;一&#xff09;唯一鍵約束&#xff08;二&#xff0…

ArcGIS Maps SDK for JavaScript:使用圖層過濾器只顯示FeatureLayer的部分要素

文章目錄 引言1 需求場景分析2精確過濾實現方案2.1 基礎過濾語法2.2 動態過濾實現 3 模糊查詢進階技巧3.1 LIKE操作符使用3.2 特殊字段處理 4. 性能優化與注意事項4.1 服務端vs客戶端過濾4.2 最佳實踐建議 5 常見問題解答 引言 在地圖應用開發中&#xff0c;圖層過濾是常見的需…

day25-計算機網絡-3

1. DNS解析流程 windows host文件是否配置域名對應的ip查詢本地DNS緩存是否有這個域名對應的ip詢問本地DNS&#xff08;網卡配置的&#xff09;是否知曉域名對應的ip本地DNS訪問根域名解析服務器&#xff0c;但是根DNS只有頂級域名的記錄&#xff0c;根告訴我們.cn頂級域名的D…

中達瑞和SHIS高光譜相機在黑色水彩筆墨跡鑒定中的應用

在文件檢驗與物證溯源領域&#xff0c;對書寫材料&#xff08;如墨水&#xff09;進行快速、準確、無損的鑒別至關重要。由陳維娜等人撰寫的《高光譜技術結合化學計量法鑒別黑色水彩筆墨跡》&#xff08;發表于《光譜學與光譜分析》2023年第7期&#xff09;利用中達瑞和SHIS凝采…

華為OD機考 - 水仙花數 Ⅰ(2025B卷 100分)

import java.util.*; public static Integer get(int count,int c){if(count<3||count>7){return -1;}//存儲每位數的最高位……最低位int[] arr new int[count];List<Integer> res new ArrayList<>();for(int i(int) Math.pow(10,count-1);i<(int) Math…

Go 標準庫 encoding/gob 快速上手

文章目錄 1.簡介2.基礎3.類型和值4.編碼細節5.安全6.主要函數6.1 注冊1. 接口的底層類型在運行時才能確定2.類型標識的唯一性3.安全性與顯式意圖4.與結構體的自動處理對比5.示例分析為什么不能像 JSON 那樣自動處理&#xff1f;總結 6.2 編碼6.3 解碼 7.示例7.1 編解碼結構體7.…

Ubuntu ifconfig 查不到ens33網卡

BUG&#xff1a;ifconfig查看網絡配置信息&#xff1a; 終端輸入以下命令&#xff1a; sudo service network-manager stop sudo rm /var/lib/NetworkManager/NetworkManager.state sudo service network-manager start - service network - manager stop &#xff1a;停止…

算法-數論

C-小紅的數組查詢&#xff08;二&#xff09;_牛客周賽 Round 95 思路&#xff1a;不難看出a數組是有循環的 d3,p4時&#xff0c;a數組&#xff1a;1、0、3、2、1、0、3、2....... 最小循環節為4&#xff0c;即最多4種不同的數 d4,p6時&#xff0c;a數組&#xff1a;1、5、3、…

CSS中text-align: justify文本兩端對齊

text-align: justify; 是 CSS 中用于控制文本對齊方式的屬性值&#xff0c;它的核心作用是讓文本兩端對齊&#xff08;分散對齊&#xff09;&#xff0c;使段落左右邊緣整齊排列。以下是詳細解析&#xff1a; 作用效果 均勻分布間距 瀏覽器會自動調整單詞/字符之間的間距&#…

WebFuture:啟動數據庫提示: error while loading shared libraries: libaio.so.1問題處理

問題分析 當出現./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory這個錯誤時&#xff0c;這意味著 MySQL 服務器&#xff08;mysqld&#xff09;在啟動過程中無法找到libaio.so.1這個共享庫文件。li…

74常用控件_QSpacerItem的使用

目錄 代碼?例: 創建?組左右排列的按鈕. Spacer 使?布局管理器的時候, 可能需要在控件之間, 添加?段空?. 就可以使? QSpacerItem 來表?. 核?屬性 屬性說明width寬度height高度hData水平方向的 sizePolicy - QSizePolicy::Ignored&#xff1a;忽略控件的尺寸&#xf…

vmware 設置 dns

vmware 設置 dns 常用的 DNS&#xff08;Domain Name System&#xff09;服務器地址可以幫助你更快、更安全地解析域名。以下是一些國內外常用的公共 DNS 服務&#xff1a; 國內常用 DNS 阿里云 DNS IPv4: 223.5.5.5、223.6.6.6IPv6: 2400:3200::1、2400:3200:baba::1特點&am…

從一次日期格式踩坑經歷,談談接口設計中的“約定大于配置“

從一次日期格式踩坑經歷&#xff0c;談談接口設計中的"約定大于配置" 背景 最近在對接一個第三方接口時&#xff0c;遇到了一個有趣的"坑"。接口文檔中要求傳入一個符合 RFC3339 格式的日期時間字符串&#xff0c;格式示例為&#xff1a;2019-10-01T08:1…

高考數學易錯考點01 | 臨陣磨槍

文章目錄 前言集合與函數不等式數列三角函數 前言 本篇內容下載于網絡&#xff0c;網絡上的都是以 WORD 版本呈現&#xff0c;缺字缺圖很不完整&#xff0c;沒法使用&#xff0c;我只是做了補充和完善。有空準備進行第二次完善&#xff0c;添加問題解釋的鏈接。 集合與函數 …

YOLO12 改進|融入 Mamba 架構:插入視覺狀態空間模塊 VSS Block 的硬核升級

在醫學圖像分割領域&#xff0c;傳統卷積神經網絡&#xff08;CNNs&#xff09;受限于局部感受野&#xff0c;難以捕捉長距離依賴關系&#xff0c;而基于 Transformer 的模型因自注意力機制的二次計算復雜度&#xff0c;在處理高分辨率圖像時效率低下。近年來&#xff0c;狀態空…

MATLAB遍歷生成20到1000個節點的無線通信網絡拓撲推理數據

功能&#xff1a; 遍歷生成20到1000個節點的無線通信網絡拓撲推理數據&#xff0c;包括網絡拓撲和每個節點發射的電磁信號&#xff0c;采樣率1MHz/3000&#xff0c;信號時長5.7s&#xff0c;單幀數據波形為實采 數據生成效果&#xff1a; 拓撲及空間位置&#xff1a; 節點電磁…