{"id":18,"date":"2025-06-19T15:24:50","date_gmt":"2025-06-19T07:24:50","guid":{"rendered":"https:\/\/kzqgy.cn\/?p=18"},"modified":"2025-07-03T10:46:02","modified_gmt":"2025-07-03T02:46:02","slug":"vxe-table%e5%b0%81%e8%a3%85vue%e7%bb%84%e4%bb%b6%ef%bc%88%e5%bc%80%e7%ae%b1%e5%8d%b3%e7%94%a8%ef%bc%89-%e7%81%b5%e6%b4%bb%e5%ba%a6%e6%9b%b4%e9%ab%98%ef%bc%8c%e9%80%82%e5%90%88%e4%ba%a7%e5%93%81","status":"publish","type":"post","link":"https:\/\/kzqgy.cn\/index.php\/2025\/06\/19\/vxe-table%e5%b0%81%e8%a3%85vue%e7%bb%84%e4%bb%b6%ef%bc%88%e5%bc%80%e7%ae%b1%e5%8d%b3%e7%94%a8%ef%bc%89-%e7%81%b5%e6%b4%bb%e5%ba%a6%e6%9b%b4%e9%ab%98%ef%bc%8c%e9%80%82%e5%90%88%e4%ba%a7%e5%93%81\/","title":{"rendered":"vxe-table\u5c01\u88c5vue\u7ec4\u4ef6\uff08\u5f00\u7bb1\u5373\u7528\uff09-\u7075\u6d3b\u5ea6\u66f4\u9ad8\uff0c\u9002\u5408\u4ea7\u54c1\u8fc7\u4e8e\u5b9a\u5236\u5316"},"content":{"rendered":"<div>\n<div>&lt;template&gt;<\/div>\n<div>\u00a0 &lt;div class=&#8221;table-box&#8221;&gt;<\/div>\n<div>\u00a0 \u00a0 &lt;div&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 &lt;div style=&#8221;padding: 0 15px&#8221; v-if=&#8221;!showAnimate&#8221;&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 &lt;vxe-form ref=&#8221;formRef&#8221;&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;slot name=&#8221;form-items&#8221;&gt;&lt;\/slot&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;vxe-form-item&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;vxe-button-group&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;vxe-button type=&#8221;submit&#8221; status=&#8221;primary&#8221; @click=&#8221;search&#8221;&gt;\u67e5\u8be2&lt;\/vxe-button&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;vxe-button type=&#8221;reset&#8221; @click=&#8221;reset&#8221;&gt;\u91cd\u7f6e&lt;\/vxe-button&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/vxe-button-group&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/vxe-form-item&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/vxe-form&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 &lt;\/div&gt;<\/div>\n<div>\u00a0 \u00a0 &lt;\/div&gt;<\/div>\n<div>\u00a0 \u00a0 &lt;div class=&#8221;table-container&#8221;&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 &lt;div class=&#8221;flex flx-j-between&#8221; style=&#8221;margin-bottom: 10px&#8221;&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 &lt;div&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;slot name=&#8221;header-button-le&#8221; \/&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/div&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 &lt;div&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;slot name=&#8221;header-button-ri&#8221; \/&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;slot name=&#8221;toolButton&#8221;&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;el-tooltip :content=&#8221;showAnimate ? &#8216;\u5c55\u5f00&#8217; : &#8216;\u6536\u8d77'&#8221; placement=&#8221;top&#8221;&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;el-button :icon=&#8221;Filter&#8221; @click=&#8221;showSearch&#8221; \/&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/el-tooltip&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;el-tooltip :content=&#8221;&#8216;\u5237\u65b0'&#8221; placement=&#8221;top&#8221;&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;el-button :icon=&#8221;Refresh&#8221; @click=&#8221;search&#8221; \/&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/el-tooltip&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;el-tooltip :content=&#8221;&#8216;\u5217\u8bbe\u7f6e'&#8221; placement=&#8221;top&#8221;&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;el-button :icon=&#8221;Operation&#8221; @click=&#8221;openColSetting&#8221; \/&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/el-tooltip&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;el-button :icon=&#8221;Download&#8221; @click=&#8221;exportEvent&#8221; v-show=&#8221;DownloadBarShow&#8221; \/&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/slot&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/div&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 &lt;\/div&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 &lt;div class=&#8221;table-wrapper&#8221;&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 &lt;vxe-table<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ref=&#8221;tableRef&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :id=&#8221;id&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :data=&#8221;tableData&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :border=&#8221;border&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 v-bind=&#8221;tableProps&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 height=&#8221;89%&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 @checkbox-all=&#8221;selectChange&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 @checkbox-change=&#8221;selectChange&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 @radio-change=&#8221;radioChange&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :show-footer=&#8221;showFooter&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :show-header-overflow=&#8221;showHeaderOverflow&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :show-footer-overflow=&#8221;showFooterOverflow&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :footer-data=&#8221;footerData&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :row-config=&#8221;{<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 useKey: true,<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 keyField: Key,<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 isHover: true,<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 isCurrent: true,<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 resizable: true,<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :column-config=&#8221;{ useKey: true, resizable: true }&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :custom-config=&#8221;customConfig&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :tooltip-config=&#8221;tooltipConfig&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :export-config=&#8221;downLoadType&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :scroll-y=&#8221;virtualConfig.y&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :scroll-x=&#8221;virtualConfig.x&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 &gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;vxe-column type=&#8221;radio&#8221; width=&#8221;60&#8243; v-if=&#8221;radio&#8221; :fixed=&#8221;&#8216;left'&#8221;&gt;&lt;\/vxe-column&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;vxe-column type=&#8221;checkbox&#8221; width=&#8221;60&#8243; v-if=&#8221;checkbox&#8221; :fixed=&#8221;&#8216;left'&#8221;&gt;&lt;\/vxe-column&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;vxe-column type=&#8221;expand&#8221; width=&#8221;60&#8243; v-if=&#8221;expand&#8221;&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;template #content=&#8221;{ row }&#8221;&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;div&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;slot name=&#8221;expand&#8221; :row=&#8221;row&#8221;&gt;&lt;\/slot&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/div&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/template&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/vxe-column&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;vxe-column type=&#8221;seq&#8221; width=&#8221;70&#8243; v-if=&#8221;seq&#8221; :fixed=&#8221;&#8216;left'&#8221;&gt;&lt;\/vxe-column&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;template v-for=&#8221;item in colSetting&#8221; :key=&#8221;item[Key]&#8221;&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;vxe-column<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 v-bind=&#8221;item&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :align=&#8221;item.align ?? &#8216;left'&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :show-overflow=&#8221;item.showOverflow ?? true&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :show-header-overflow=&#8221;item.showHeaderOverflow ?? false&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :show-footer-overflow=&#8221;item.showFooterOverflow ?? false&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :title-prefix=&#8221;item[&#8216;title-prefix&#8217;]&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :title-suffix=&#8221;item[&#8216;title-suffix&#8217;]&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 row-resize<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;template #header=&#8221;scope&#8221;&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;slot v-if=&#8221;item.header&#8221; :scope=&#8221;scope&#8221; :name=&#8221;item.header&#8221; \/&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;span v-else&gt;{{ scope.column.title }}&lt;\/span&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/template&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;template #default=&#8221;scope&#8221;&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;slot v-if=&#8221;item.slot&#8221; :scope=&#8221;scope&#8221; :name=&#8221;item.slot&#8221; \/&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;div v-else&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 {{ formatData(scope.row, item.field) }}<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/div&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/template&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/vxe-column&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/template&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;!&#8211; \u7a7a\u6570\u636e\u65f6\u663e\u793a\u56fe\u7247 &#8211;&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;template #empty&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;div class=&#8221;emptyStyle&#8221;&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;img<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 src=&#8221;@\/assets\/images\/notData.png&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 style=&#8221;width: 200px; opacity: 0.6&#8243;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 alt=&#8221;\u6682\u65e0\u6570\u636e&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;div style=&#8221;margin-top: 10px; color: #909399&#8243;&gt;\u6682\u65e0\u6570\u636e&lt;\/div&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/div&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/template&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/vxe-table&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 &lt;div&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;vxe-pager<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 style=&#8221;padding-right: 10px&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 v-model:current-page=&#8221;current&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 v-model:page-size=&#8221;size&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :page-size=&#8221;size&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :total=&#8221;total&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :layouts=&#8221;[&#8216;Total&#8217;, &#8216;Sizes&#8217;, &#8216;PrevPage&#8217;, &#8216;Number&#8217;, &#8216;NextPage&#8217;, &#8216;Jump&#8217;, &#8216;PageCount&#8217;]&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :page-sizes=&#8221;pageSizes&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 @page-change=&#8221;handlePageChange&#8221;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;template #pageCount=&#8221;{ pageCount }&#8221;&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;span&gt;\u5171{{ pageCount }}\u9875&lt;\/span&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/template&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/vxe-pager&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/div&gt;<\/div>\n<div>\u00a0 \u00a0 \u00a0 &lt;\/div&gt;<\/div>\n<div>\u00a0 \u00a0 &lt;\/div&gt;<\/div>\n<div>\u00a0 &lt;\/div&gt;<\/div>\n<div>&lt;\/template&gt;<\/div>\n<div>&lt;script setup lang=&#8221;js&#8221;&gt;<\/div>\n<div>import { onMounted, ref, computed, reactive \u00a0 } from &#8216;vue&#8217;;<\/div>\n<div>import { ElLoading, ElMessage } from &#8216;element-plus&#8217;;<\/div>\n<div>import { Filter, Operation, Refresh, Download } from &#8216;@element-plus\/icons-vue&#8217;;<\/div>\n<div>import { cloneDeep } from &#8216;lodash-es&#8217;;<\/div>\n<div>const props = defineProps({<\/div>\n<div>\u00a0 \/\/ \u8868\u683cid<\/div>\n<div>\u00a0 id: {<\/div>\n<div>\u00a0 \u00a0 type: String,<\/div>\n<div>\u00a0 \u00a0 required: true,<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 \/\/ \u67e5\u8be2\u53c2\u6570\u5bf9\u8c61<\/div>\n<div>\u00a0 searchParams: {<\/div>\n<div>\u00a0 \u00a0 type: Object,<\/div>\n<div>\u00a0 \u00a0 default: () =&gt; ({})<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 \/\/ \u67e5\u8be2\u53c2\u6570\u5bf9\u8c61\u81ea\u5b9a\u4e49<\/div>\n<div>\u00a0 apiParams: {<\/div>\n<div>\u00a0 \u00a0 type: Object,<\/div>\n<div>\u00a0 \u00a0 default: () =&gt; ({})<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 \/\/ \u662f\u5426\u663e\u793a\u5e8f\u53f7\u5217<\/div>\n<div>\u00a0 seq: {<\/div>\n<div>\u00a0 \u00a0 type: Boolean,<\/div>\n<div>\u00a0 \u00a0 default: false<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 \/\/ \u662f\u5426\u663e\u793a\u5355\u9009\u5217<\/div>\n<div>\u00a0 radio: {<\/div>\n<div>\u00a0 \u00a0 type: Boolean,<\/div>\n<div>\u00a0 \u00a0 default: false<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 \/\/ \u662f\u5426\u663e\u793a\u591a\u9009\u5217<\/div>\n<div>\u00a0 checkbox: {<\/div>\n<div>\u00a0 \u00a0 type: Boolean,<\/div>\n<div>\u00a0 \u00a0 default: true<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 \/\/ \u662f\u5426\u663e\u793a\u5c55\u5f00\u884c<\/div>\n<div>\u00a0 expand: {<\/div>\n<div>\u00a0 \u00a0 type: Boolean,<\/div>\n<div>\u00a0 \u00a0 default: false<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 \/\/ \u662f\u5426\u663e\u793a\u8868\u683c\u8fb9\u6846<\/div>\n<div>\u00a0 border: {<\/div>\n<div>\u00a0 \u00a0 type: Boolean,<\/div>\n<div>\u00a0 \u00a0 default: false<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 \/\/ \u83b7\u53d6\u6570\u636e\u7684API\u51fd\u6570<\/div>\n<div>\u00a0 apiName: {<\/div>\n<div>\u00a0 \u00a0 type: Function,<\/div>\n<div>\u00a0 \u00a0 required: true,<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 \/\/ \u8868\u683c\u884c\u7684\u552f\u4e00\u6807\u8bc6\u5b57\u6bb5\u540d<\/div>\n<div>\u00a0 Key: {<\/div>\n<div>\u00a0 \u00a0 type: String,<\/div>\n<div>\u00a0 \u00a0 default: &#8216;id&#8217;<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 \/\/ \u5bfc\u51fa\u6587\u4ef6\u7c7b\u578b<\/div>\n<div>\u00a0 downLoadType: {<\/div>\n<div>\u00a0 \u00a0 type: [String, Object],<\/div>\n<div>\u00a0 \u00a0 default: () =&gt; ({ type: &#8216;xlsx&#8217; })<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 \/\/ \u662f\u5426\u663e\u793a\u5bfc\u51fa\u6309\u94ae<\/div>\n<div>\u00a0 DownloadBarShow: {<\/div>\n<div>\u00a0 \u00a0 type: Boolean,<\/div>\n<div>\u00a0 \u00a0 default: false<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 \/\/ \u662f\u5426\u663e\u793a\u8868\u5c3e<\/div>\n<div>\u00a0 showFooter: {<\/div>\n<div>\u00a0 \u00a0 type: Boolean,<\/div>\n<div>\u00a0 \u00a0 default: false<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 \/\/ \u8868\u5c3e\u5185\u5bb9\u662f\u5426\u6ea2\u51fa\u663e\u793a<\/div>\n<div>\u00a0 showFooterOverflow: {<\/div>\n<div>\u00a0 \u00a0 type: Boolean,<\/div>\n<div>\u00a0 \u00a0 default: true<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 \/\/ \u8868\u5934\u5185\u5bb9\u662f\u5426\u6ea2\u51fa\u663e\u793a<\/div>\n<div>\u00a0 showHeaderOverflow: {<\/div>\n<div>\u00a0 \u00a0 type: Boolean,<\/div>\n<div>\u00a0 \u00a0 default: true<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 \/\/ \u8868\u5c3e\u6570\u636e<\/div>\n<div>\u00a0 footerData: {<\/div>\n<div>\u00a0 \u00a0 type: Array,<\/div>\n<div>\u00a0 \u00a0 default: () =&gt; ([])<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 \/\/ \u63d0\u793a\u914d\u7f6e<\/div>\n<div>\u00a0 tooltipConfig: {<\/div>\n<div>\u00a0 \u00a0 type: Object,<\/div>\n<div>\u00a0 \u00a0 default: () =&gt; ({})<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 \/\/ \u5217\u914d\u7f6e<\/div>\n<div>\u00a0 columns: Array,<\/div>\n<div>\u00a0 \/\/ \u8868\u683c\u5c5e\u6027\u914d\u7f6e<\/div>\n<div>\u00a0 tableProps: Object,<\/div>\n<div>\u00a0 \/\/ \u5206\u9875\u5927\u5c0f\u9009\u9879<\/div>\n<div>\u00a0 pageSizes: {<\/div>\n<div>\u00a0 \u00a0 type: Array,<\/div>\n<div>\u00a0 \u00a0 default: () =&gt; [10, 20, 30, 50, 100]<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 \/\/ \u865a\u62df\u6eda\u52a8\u662f\u5426\u5f00\u542f<\/div>\n<div>\u00a0 enabled : {<\/div>\n<div>\u00a0 \u00a0 type: Boolean,<\/div>\n<div>\u00a0 \u00a0 default: true<\/div>\n<div>\u00a0 }<\/div>\n<div>});<\/div>\n<div>const emits = defineEmits([&#8216;reset&#8217;,&#8217;error&#8217;]);<\/div>\n<div>const loading = ref(false)<\/div>\n<div>const colSetting = ref(props.columns);<\/div>\n<div>const tableRef = ref();<\/div>\n<div>const formRef = ref(null);<\/div>\n<div>const showAnimate = ref(true);<\/div>\n<div>const current = ref(1);<\/div>\n<div>const size = ref(10);<\/div>\n<div>const total = ref(0);<\/div>\n<div>const tableData = ref([]);<\/div>\n<div>\/\/ \u52a8\u6001\u865a\u62df\u6eda\u52a8\u914d\u7f6e<\/div>\n<div>const virtualConfig = computed(() =&gt; ({<\/div>\n<div>\u00a0 y: {<\/div>\n<div>\u00a0 \u00a0 enabled: \u00a0props.enabled,<\/div>\n<div>\u00a0 \u00a0 gt: 80,<\/div>\n<div>\u00a0 \u00a0 scrollY: {<\/div>\n<div>\u00a0 \u00a0 \u00a0 mode: &#8216;wheel&#8217; \/\/ \u63a8\u8350\u914d\u7f6e\uff1a\u6eda\u8f6e\u6a21\u5f0f\u66f4\u6d41\u7545<\/div>\n<div>\u00a0 \u00a0 }<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 x: {<\/div>\n<div>\u00a0 \u00a0 enabled: tableData.value.some(row =&gt; {<\/div>\n<div>\u00a0 \u00a0 \u00a0 try {<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 return (Object.keys(row).length &gt; 8 || JSON.stringify(row).length &gt; 300 )&amp;&amp; props.enabled<\/div>\n<div>\u00a0 \u00a0 \u00a0 } catch {<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 return false<\/div>\n<div>\u00a0 \u00a0 \u00a0 }<\/div>\n<div>\u00a0 \u00a0 }),<\/div>\n<div>\u00a0 \u00a0 gt: 5,<\/div>\n<div>\u00a0 \u00a0 scrollX: {<\/div>\n<div>\u00a0 \u00a0 \u00a0 mode: &#8216;wheel&#8217;<\/div>\n<div>\u00a0 \u00a0 }<\/div>\n<div>\u00a0 }<\/div>\n<div>}))<\/div>\n<div>\/\/ \u5176\u4f59\u65b9\u6cd5\u4fdd\u6301\u4e0d\u53d8<\/div>\n<div>const formatData = (row, field) =&gt; {<\/div>\n<div>\u00a0 return field &amp;&amp; row[field] !== undefined ? row[field] : &#8216;-&#8216;;<\/div>\n<div>};<\/div>\n<div>const selectIdLists = ref([]);<\/div>\n<div>const selectLists = ref([]);<\/div>\n<div>const selectChange = () =&gt; {<\/div>\n<div>\u00a0 const records = tableRef.value?.getCheckboxRecords() || [];<\/div>\n<div>\u00a0 selectLists.value = records;<\/div>\n<div>\u00a0 selectIdLists.value = records.map((i) =&gt; { return i[props.Key] });<\/div>\n<div>};<\/div>\n<div>const selectList = ref([]);<\/div>\n<div>const radioChange = ({ row }) =&gt; {<\/div>\n<div>\u00a0 selectList.value = row;<\/div>\n<div>};<\/div>\n<div>const showSearch = () =&gt; {<\/div>\n<div>\u00a0 showAnimate.value = !showAnimate.value;<\/div>\n<div>\u00a0 \/\/ formRef.value.toggleCollapse();<\/div>\n<div>};<\/div>\n<div>const model = ref({})<\/div>\n<div>const search = () =&gt; {<\/div>\n<div>\u00a0 getTableData();<\/div>\n<div>};<\/div>\n<div>const reset = () =&gt; {<\/div>\n<div>\u00a0 emits(&#8216;reset&#8217;);<\/div>\n<div>\u00a0 current.value = 1<\/div>\n<div>\u00a0 tableRef.value.clearCheckboxRow();<\/div>\n<div>\u00a0 tableRef.value.clearRadioRow();<\/div>\n<div>\u00a0 selectLists.value = [];<\/div>\n<div>\u00a0 selectIdLists.value = [];<\/div>\n<div>\u00a0 selectList.value = [];<\/div>\n<div>\u00a0 setTimeout(() =&gt; {<\/div>\n<div>\u00a0 \u00a0 getTableData();<\/div>\n<div>\u00a0 \u00a0 console.log(&#8216;model.value&#8217;, model.value);<\/div>\n<div>\u00a0 }, 0);<\/div>\n<div>};<\/div>\n<div>const getTableData = () =&gt; {<\/div>\n<div>\u00a0 \/\/ const loadingInstance = ElLoading.service({<\/div>\n<div>\u00a0 \/\/ \u00a0 text: &#8216;\u52a0\u8f7d\u4e2d&#8230;&#8217;<\/div>\n<div>\u00a0 \/\/ })<\/div>\n<div>\u00a0 model.value = cloneDeep(props.searchParams)<\/div>\n<div>\u00a0 const apiParams = cloneDeep(props.apiParams)<\/div>\n<div>\u00a0 const query = {<\/div>\n<div>\u00a0 \u00a0 &#8230;model.value,<\/div>\n<div>\u00a0 \u00a0 &#8230;apiParams,<\/div>\n<div>\u00a0 \u00a0 current: current.value,<\/div>\n<div>\u00a0 \u00a0 size: size.value<\/div>\n<div>\u00a0 }<\/div>\n<div>\u00a0 if (!props.apiName) return;<\/div>\n<div>\u00a0 props.apiName(current.value,size.value,Object.assign({},query))<\/div>\n<div>\u00a0 \u00a0 .then(({ data:res }) =&gt; {<\/div>\n<div>\u00a0 \u00a0 \u00a0 \/\/ loadingInstance.close()<\/div>\n<div>\u00a0 \u00a0 \u00a0 tableData.value = res.data.records || []<\/div>\n<div>\u00a0 \u00a0 \u00a0 total.value = res.data.total || 0<\/div>\n<div>\u00a0 \u00a0 })<\/div>\n<div>\u00a0 \u00a0 .catch((err) =&gt; {<\/div>\n<div>\u00a0 \u00a0 \u00a0 \/\/ loadingInstance.close()<\/div>\n<div>\u00a0 \u00a0 \u00a0 emits(&#8216;error&#8217;, err)<\/div>\n<div>\u00a0 \u00a0 })<\/div>\n<div>}<\/div>\n<div>const handleSizeChange = (val) =&gt; {<\/div>\n<div>\u00a0 size.value = val;<\/div>\n<div>};<\/div>\n<div>const handleCurrentChange = (val) =&gt; {<\/div>\n<div>\u00a0 current.value = val;<\/div>\n<div>};<\/div>\n<div>const handlePageChange = ({ currentPage, pageSize }) =&gt; {<\/div>\n<div>\u00a0 handleSizeChange(pageSize)<\/div>\n<div>\u00a0 handleCurrentChange(currentPage)<\/div>\n<div>\u00a0 getTableData();<\/div>\n<div>}<\/div>\n<div>onMounted(() =&gt; {<\/div>\n<div>\u00a0 getTableData();<\/div>\n<div>});<\/div>\n<div>const findCustomSetting = (id) =&gt; {<\/div>\n<div>\u00a0 return new Promise(resolve =&gt; {<\/div>\n<div>\u00a0 \u00a0 setTimeout(() =&gt; {<\/div>\n<div>\u00a0 \u00a0 \u00a0 try {<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 if (sessionStorage.getItem(id)) {<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 resolve(JSON.parse(sessionStorage.getItem(id) || &#8221;))<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ ElMessage.success(&#8216;\u5f02\u6b65\u8fd8\u539f\u7528\u6237\u4e2a\u6027\u5316\u6570\u636e\u6210\u529f&#8217;)<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 } else {<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 resolve({})<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 }<\/div>\n<div>\u00a0 \u00a0 \u00a0 } catch (e) {<\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 resolve({})<\/div>\n<div>\u00a0 \u00a0 \u00a0 }<\/div>\n<div>\u00a0 \u00a0 }, 300)<\/div>\n<div>\u00a0 })<\/div>\n<div>}<\/div>\n<div>const saveCustomSetting = (id, storeData) =&gt; {<\/div>\n<div>\u00a0 return new Promise(resolve =&gt; {<\/div>\n<div>\u00a0 \u00a0 setTimeout(() =&gt; {<\/div>\n<div>\u00a0 \u00a0 \u00a0 sessionStorage.setItem(id, JSON.stringify(storeData))<\/div>\n<div>\u00a0 \u00a0 \u00a0 ElMessage.success(&#8216;\u4fdd\u5b58\u7528\u6237\u4e2a\u6027\u5316\u6570\u636e\u6210\u529f&#8217;)<\/div>\n<div>\u00a0 \u00a0 \u00a0 resolve()<\/div>\n<div>\u00a0 \u00a0 }, 200)<\/div>\n<div>\u00a0 })<\/div>\n<div>}<\/div>\n<div>const customConfig = reactive({<\/div>\n<div>\u00a0 storage: true,<\/div>\n<div>\u00a0 restoreStore ({ id }) {<\/div>\n<div>\u00a0 \u00a0 return findCustomSetting(id)<\/div>\n<div>\u00a0 },<\/div>\n<div>\u00a0 updateStore ({ id, storeData }) {<\/div>\n<div>\u00a0 \u00a0 return saveCustomSetting(id, storeData)<\/div>\n<div>\u00a0 }<\/div>\n<div>})<\/div>\n<div>const openColSetting = () =&gt; {<\/div>\n<div>\u00a0 tableRef.value.openCustom();<\/div>\n<div>};<\/div>\n<div>const exportEvent = () =&gt; {<\/div>\n<div>\u00a0 tableRef.value.openExport();<\/div>\n<div>};<\/div>\n<div>defineExpose({<\/div>\n<div>\u00a0 getTableData,<\/div>\n<div>\u00a0 tableRef,<\/div>\n<div>\u00a0 selectLists,<\/div>\n<div>\u00a0 selectIdLists,<\/div>\n<div>\u00a0 selectList<\/div>\n<div>});<\/div>\n<div>&lt;\/script&gt;<\/div>\n<div>&lt;style scoped lang=&#8221;scss&#8221;&gt;<\/div>\n<div>@import &#8216;.\/style.scss&#8217;;<\/div>\n<div>&lt;\/style&gt;<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>&lt;template&gt; \u00a0 &lt;div class=&#8221;&#8230; <a href=\"https:\/\/kzqgy.cn\/index.php\/2025\/06\/19\/vxe-table%e5%b0%81%e8%a3%85vue%e7%bb%84%e4%bb%b6%ef%bc%88%e5%bc%80%e7%ae%b1%e5%8d%b3%e7%94%a8%ef%bc%89-%e7%81%b5%e6%b4%bb%e5%ba%a6%e6%9b%b4%e9%ab%98%ef%bc%8c%e9%80%82%e5%90%88%e4%ba%a7%e5%93%81\/\" class=\"readmore\">Read more<span class=\"screen-reader-text\">vxe-table\u5c01\u88c5vue\u7ec4\u4ef6\uff08\u5f00\u7bb1\u5373\u7528\uff09-\u7075\u6d3b\u5ea6\u66f4\u9ad8\uff0c\u9002\u5408\u4ea7\u54c1\u8fc7\u4e8e\u5b9a\u5236\u5316<\/span><span class=\"fa fa-angle-double-right\" aria-hidden=\"true\"><\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[3,4],"class_list":["post-18","post","type-post","status-publish","format-standard","hentry","category-all","tag-vxe-table","tag-4","content-layout-excerpt-thumb"],"_links":{"self":[{"href":"https:\/\/kzqgy.cn\/index.php\/wp-json\/wp\/v2\/posts\/18","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kzqgy.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kzqgy.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kzqgy.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kzqgy.cn\/index.php\/wp-json\/wp\/v2\/comments?post=18"}],"version-history":[{"count":3,"href":"https:\/\/kzqgy.cn\/index.php\/wp-json\/wp\/v2\/posts\/18\/revisions"}],"predecessor-version":[{"id":40,"href":"https:\/\/kzqgy.cn\/index.php\/wp-json\/wp\/v2\/posts\/18\/revisions\/40"}],"wp:attachment":[{"href":"https:\/\/kzqgy.cn\/index.php\/wp-json\/wp\/v2\/media?parent=18"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kzqgy.cn\/index.php\/wp-json\/wp\/v2\/categories?post=18"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kzqgy.cn\/index.php\/wp-json\/wp\/v2\/tags?post=18"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}