소스 검색

refactor(CustomTable、TableTools组件): 新增TableTools组件,用于展示表格工具栏

重构表格上方工具栏代码,拆分到TableTools组件中
fxs 6 달 전
부모
커밋
023b0ebb11

+ 1 - 0
components.d.ts

@@ -65,6 +65,7 @@ declare module 'vue' {
     StatisticText: typeof import('./src/components/dataAnalysis/StatisticText.vue')['default']
     TableFieldText: typeof import('./src/components/table/TableFieldText.vue')['default']
     TableFilterForm: typeof import('./src/components/form/TableFilterForm/TableFilterForm.vue')['default']
+    TableTools: typeof import('./src/components/table/TableTools.vue')['default']
     TemporalTrend: typeof import('./src/components/dataAnalysis/TemporalTrend.vue')['default']
     TimeLineChart: typeof import('./src/components/echarts/TimeLineChart.vue')['default']
     WithIconSelect: typeof import('./src/components/common/WithIconSelect.vue')['default']

+ 0 - 3
src/components/form/TableFilterForm/FilterSelect.vue

@@ -30,8 +30,6 @@ const selectState = ref<SelectAllItem>({
  * -绑定值必须为数组
  *
  * 以上条件必须同时满足,否则返回false
- *
- * @param item 查询信息
  */
 const isMultipleSelect = (): boolean => {
   const item = props.item
@@ -109,7 +107,6 @@ const changeCheckAll = () => {
 /**
  * 处理点击多选按钮事件。
  *
- * @param item 查询条件信息
  */
 const handleCheckAll = () => {
   changeCheckAll()

+ 2 - 2
src/components/form/TableFilterForm/FilterSelectLabel.vue

@@ -1,12 +1,12 @@
 <script setup lang="ts">
-interface FilterSelctLable {
+interface FilterSelectLabel {
   label: string
   supplement?: string
   popoverInfoClass?: string
   popoverInfoStyle?: string
 }
 
-defineProps<FilterSelctLable>()
+defineProps<FilterSelectLabel>()
 </script>
 
 <template>

+ 10 - 71
src/components/table/CustomTable.vue

@@ -2,7 +2,7 @@
  * @Author: fxs bjnsfxs@163.com
  * @Date: 2024-08-20 18:16:18
  * @LastEditors: fxs bjnsfxs@163.com
- * @LastEditTime: 2024-12-02
+ * @LastEditTime: 2024-12-03
  * @Description: 
  * 
 -->
@@ -19,10 +19,10 @@ import { useRequest } from '@/hooks/useRequest.ts'
 import { computed, onMounted, reactive, ref, toRaw, watch } from 'vue'
 
 import TableFilterForm from '../form/TableFilterForm/TableFilterForm.vue'
-import FilterPopover from '../toolsBtn/FilterPopover.vue'
-import RefreshBtn from '../toolsBtn/RefreshBtn.vue'
 import TableFieldText from './TableFieldText.vue'
 import axiosInstance from '@/utils/axios/axiosInstance.ts'
+import TableTools from './TableTools.vue'
+
 type TableFilterFormRef = InstanceType<typeof TableFilterForm>
 
 // 查询表单的Ref
@@ -33,20 +33,12 @@ const { analysisResCode } = useRequest()
 // 节流的延迟时间
 const throttleTime = 500
 
-// 表格工具图标大小
-const toolsIconSize = ref(25)
-
 const props = withDefaults(defineProps<PropsParams>(), {
   needRowindex: true,
   needAverage: false,
-  needLeftTools: false,
-  needRightTools: false,
   openFilterQuery: false,
   openPageQuery: true,
   openRemoteQuery: true,
-  needUpload: false,
-  needDownLoad: false,
-
   loadingState: false
 })
 
@@ -473,7 +465,6 @@ onMounted(() => {
 <template>
   <div class="tableContent">
     <div class="filterBox" v-if="openFilterQuery && queryInfo">
-      <!-- slot -->
       <div class="filterHeader">
         <span>查询条件</span>
       </div>
@@ -488,48 +479,13 @@ onMounted(() => {
     </div>
 
     <div class="tableTools">
-      <div class="leftTools">
-        <div class="leftToolsGroup" v-if="needLeftTools" style="display: flex">
-          <el-button class="leftToolBtn" color="#165dff" @click="emits('addNewItem')">
-            <el-icon>
-              <Plus />
-            </el-icon>
-            新增
-          </el-button>
-          <el-button
-            class="leftToolBtn"
-            color="#626aef"
-            @click="emits('upload', outGetTableData())"
-            v-if="needUpload"
-          >
-            <el-icon>
-              <Upload />
-            </el-icon>
-            上传
-          </el-button>
-        </div>
-      </div>
-      <div class="rightTools" v-if="needRightTools">
-        <el-button
-          v-if="needDownload"
-          color="#f0f1f3"
-          size="default"
-          class="rightToolsItem"
-          @click="downLoadTable"
-        >
-          <el-icon>
-            <Download />
-          </el-icon>
-          下载
-        </el-button>
-
-        <RefreshBtn @refresh-table="throttleGetData" :icon-size="toolsIconSize"></RefreshBtn>
-
-        <FilterPopover
-          :table-fields-info="tableFieldsInfo"
-          :icon-size="toolsIconSize"
-        ></FilterPopover>
-      </div>
+      <TableTools
+        :table-fields-info="props.tableFieldsInfo"
+        :tools-config="props.tools"
+        @add="emits('addNewItem')"
+        @download="downLoadTable"
+        @refresh="throttleGetData"
+      ></TableTools>
     </div>
 
     <div class="tableBox">
@@ -645,8 +601,6 @@ onMounted(() => {
 .tableContent {
   margin: 10px auto 20px;
   width: 100%;
-
-  /* height: 100%; */
   box-shadow:
     0 4px 8px 0 rgba(0, 0, 0, 0.02),
     0 1px 3px 0 rgba(0, 0, 0, 0.02);
@@ -678,8 +632,6 @@ onMounted(() => {
   color: black;
   font-size: 16px;
   font-weight: bold;
-  /* background-color: lightblue; */
-  /* margin-bottom: 1%; */
 }
 
 .filterBody {
@@ -732,13 +684,6 @@ onMounted(() => {
   margin-left: 5px;
 }
 
-.tableTools {
-  width: 98%;
-  display: flex;
-  justify-content: space-between;
-  margin: 1% auto 0;
-}
-
 .leftTools,
 .rightTools {
   width: 10%;
@@ -753,20 +698,14 @@ onMounted(() => {
 
 .tableBox {
   width: 98%;
-  /* height: 98%; */
   margin: 5px auto;
   box-shadow:
     0 4px 8px 0 rgba(0, 0, 0, 0.02),
     0 1px 3px 0 rgba(0, 0, 0, 0.02);
-  /* margin-top: 0.5%;
-  margin-bottom: 2%; */
 }
 
 .tableBody {
   box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.1);
-  /* box-shadow:
-    -4px -4px 8px 1px rgba(0, 0, 0, 0.02),
-    -4px -4px 3px 1px rgba(0, 0, 0, 0.02); */
 }
 
 .userTablePaginationBox {

+ 101 - 0
src/components/table/TableTools.vue

@@ -0,0 +1,101 @@
+<script setup lang="ts">
+import type { TableFieldInfo } from '@/types/table'
+import type { TableToolsConfig } from '@/types/table'
+
+interface TableToolsProps {
+  // 工具栏配置
+  toolsConfig?: TableToolsConfig
+
+  // 筛选
+  filterFields?: boolean
+
+  // 工具图标大小
+  toolsIconSize?: number
+
+  // 表格字段信息
+  tableFieldsInfo: TableFieldInfo[]
+}
+
+const props = withDefaults(defineProps<TableToolsProps>(), {
+  toolsConfig: () => {
+    return {
+      add: false,
+      download: false,
+      refresh: false,
+      filterFields: false
+    }
+  },
+
+  filterFields: false,
+  toolsIconSize: 25
+})
+
+/**
+ * 此处没有做响应式,因为工具栏一般不会动态变化
+ *
+ */
+const { add, download, filterFields, refresh } = props.toolsConfig
+
+const emits = defineEmits(['add', 'refresh', 'download'])
+</script>
+
+<template>
+  <div class="tableToolsContainer">
+    <div class="leftTools">
+      <div class="leftToolsGroup" style="display: flex">
+        <el-button v-if="add" class="leftToolBtn" color="#165dff" @click="emits('add')">
+          <el-icon>
+            <Plus />
+          </el-icon>
+          新增
+        </el-button>
+      </div>
+    </div>
+    <div class="rightTools">
+      <el-button
+        v-if="download"
+        color="#f0f1f3"
+        size="default"
+        class="rightToolsItem"
+        @click="emits('download')"
+      >
+        <el-icon>
+          <Download />
+        </el-icon>
+        下载
+      </el-button>
+
+      <RefreshBtn
+        v-if="refresh"
+        @refresh-table="emits('refresh')"
+        :icon-size="toolsIconSize"
+      ></RefreshBtn>
+      <FilterPopover
+        v-if="filterFields"
+        :table-fields-info="tableFieldsInfo"
+        :icon-size="toolsIconSize"
+      ></FilterPopover>
+    </div>
+  </div>
+</template>
+
+<style scoped>
+.tableToolsContainer {
+  width: 98%;
+  display: flex;
+  justify-content: space-between;
+  margin: 1% auto 0;
+}
+
+.leftTools,
+.rightTools {
+  width: 10%;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+
+.leftToolBtn {
+  margin-right: 5px;
+}
+</style>

+ 17 - 12
src/types/table.ts

@@ -2,7 +2,7 @@
  * @Author: fxs bjnsfxs@163.com
  * @Date: 2024-08-20 17:56:13
  * @LastEditors: fxs bjnsfxs@163.com
- * @LastEditTime: 2024-11-29
+ * @LastEditTime: 2024-12-03
  * @FilePath: \Game-Backstage-Management-System\src\types\table.ts
  * @Description:
  *
@@ -71,6 +71,14 @@ export interface TableFieldInfo {
   specialEffect?: SpecialEffect
 }
 
+// 表格工具栏的配置
+export interface TableToolsConfig {
+  add?: boolean
+  download?: boolean
+  refresh?: boolean
+  filterFields?: boolean
+}
+
 /**
  * 表格组件的属性
  */
@@ -78,26 +86,23 @@ export interface PropsParams {
   loadingState?: boolean // loading动画,这个配置是当数据直接由外部控制时触发
   needRowindex?: boolean // 是否需要行号
   needAverage?: boolean // 是否需要均值功能
-  needLeftTools?: boolean // 是否需要左侧的工具栏
-  /**
-   *  是否需要右侧工具栏
-   * 如果需要筛选字段,请把tableFieldsInfo设置为响应式对象
-   */
-  needRightTools?: boolean
-  needUpload?: boolean // 是否需要上传功能
-  needDownload?: boolean // 是否需要下载功能
-
   openFilterQuery?: boolean // 是否开启上方查询功能
   openPageQuery?: boolean // 是否开启分页功能
-  openRemoteQuery?: boolean // 是否开启远程查询
+  openRemoteQuery?: boolean // 是否开启远程分页查询
 
   dataList?: Array<any> // 表格数据,可以直接传入,也可以给请求地址来请求
   queryInfo?: Array<QueryInfo> // 上方查询功能所需要的信息
   paginationConfig?: TablePaginationSetting // 表格分页的信息
   tableFieldsInfo: Array<TableFieldInfo> // 表格字段信息
-  requestConfig?: ReqConfig
+  requestConfig?: ReqConfig // 请求配置
 
   watchReqProps?: Array<string> // 需要被监听的属性
+
+  /**
+   *  工具栏配置
+   * 如果需要筛选字段,请把tableFieldsInfo设置为响应式对象
+   */
+  tools?: TableToolsConfig
 }
 
 // 选择下拉框的信息格式

+ 18 - 3
src/views/AppManage/EventDetailsView.vue

@@ -1,9 +1,17 @@
+<!--
+ * @Author: fxs bjnsfxs@163.com
+ * @Date: 2024-09-18
+ * @LastEditors: fxs bjnsfxs@163.com
+ * @LastEditTime: 2024-12-03
+ * @Description: 
+ * 
+-->
 <script setup lang="ts">
 import type { ReqConfig } from '@/types/dataAnalysis'
 import type { FormField, FormConfig } from '@/types/form'
 import type { FormRules } from 'element-plus'
 import type { DialogConfig } from '@/types/dialog'
-import type { TablePaginationSetting, TableFieldInfo } from '@/types/table'
+import type { TablePaginationSetting, TableFieldInfo, TableToolsConfig } from '@/types/table'
 
 import { FormFieldType } from '@/types/form'
 import { ElMessageBox } from 'element-plus'
@@ -212,6 +220,14 @@ const tableReqConfig = reactive<ReqConfig>({
   otherOptions: {}
 })
 
+// 工具栏配置
+const tableToolsConfig: TableToolsConfig = {
+  add: true,
+  filterFields: true,
+  refresh: true,
+  download: false
+}
+
 // 对话框请求参数
 const dialogReqConfig = reactive<ReqConfig>({
   url: AllApi.addGameActionOption,
@@ -469,8 +485,7 @@ onUnmounted(() => {
     </div>
     <div class="list">
       <Table
-        :need-right-tools="true"
-        :need-left-tools="true"
+        :tools="tableToolsConfig"
         :open-page-query="true"
         :pagination-config="pageConfig"
         :table-fields-info="tableFieldConfig"

+ 24 - 3
src/views/AppManage/EventMangeTable.vue

@@ -1,8 +1,22 @@
+<!--
+ * @Author: fxs bjnsfxs@163.com
+ * @Date: 2024-09-18
+ * @LastEditors: fxs bjnsfxs@163.com
+ * @LastEditTime: 2024-12-03
+ * @Description: 
+ * 
+-->
 <script setup lang="ts">
 import type { ReqConfig } from '@/types/dataAnalysis'
 import type { FormRules } from 'element-plus'
 import type { DialogConfig } from '@/types/dialog'
-import type { TablePaginationSetting, TableFieldInfo, QueryInfo, SelectInfo } from '@/types/table'
+import type {
+  TablePaginationSetting,
+  TableFieldInfo,
+  QueryInfo,
+  SelectInfo,
+  TableToolsConfig
+} from '@/types/table'
 import type { FormField } from '@/types/form'
 
 import { useRequest } from '@/hooks/useRequest'
@@ -104,6 +118,14 @@ const requestConfig = reactive<ReqConfig>({
   }
 })
 
+// 工具栏配置
+const tableToolsConfig: TableToolsConfig = {
+  add: true,
+  filterFields: true,
+  refresh: true,
+  download: false
+}
+
 // 事件类型查询信息
 const eventStatus: Array<SelectInfo> = [
   {
@@ -293,9 +315,8 @@ defineExpose({
       :pagination-config="pagingConfig"
       :table-fields-info="tableFieldsInfo"
       :query-info="queryInfo"
-      :need-left-tools="true"
+      :tools="tableToolsConfig"
       :open-filter-query="true"
-      :need-right-tools="true"
       :open-remote-query="true"
       @add-new-item="addNewEvent"
     >

+ 19 - 3
src/views/AppManage/UserConversionTable.vue

@@ -1,3 +1,11 @@
+<!--
+ * @Author: fxs bjnsfxs@163.com
+ * @Date: 2024-11-06
+ * @LastEditors: fxs bjnsfxs@163.com
+ * @LastEditTime: 2024-12-03
+ * @Description: 
+ * 
+-->
 <script setup lang="ts">
 import { useRequest } from '@/hooks/useRequest'
 import { useCommonStore } from '@/stores/useCommon'
@@ -10,7 +18,8 @@ import {
   type QueryInfo,
   type SelectInfo,
   type TableFieldInfo,
-  type TablePaginationSetting
+  type TablePaginationSetting,
+  type TableToolsConfig
 } from '@/types/table'
 import router from '@/router'
 
@@ -26,6 +35,14 @@ const requestConfig = reactive<ReqConfig>({
   }
 })
 
+// 工具栏配置
+const tableToolsConfig: TableToolsConfig = {
+  add: true,
+  filterFields: true,
+  refresh: true,
+  download: false
+}
+
 // 表格分页设置
 const pagingConfig = reactive<TablePaginationSetting>({
   limit: 20,
@@ -159,9 +176,8 @@ const goDetail = (data: any) => {
       :open-page-query="true"
       :query-info="queryInfo"
       :open-filter-query="true"
-      :need-left-tools="true"
       :open-remote-query="true"
-      :need-right-tools="true"
+      :tools="tableToolsConfig"
       @add-new-item="goDetail"
     >
       <template #tableOperation>

+ 25 - 2
src/views/Home/AdvertisingData/AdvertisingList.vue

@@ -1,3 +1,11 @@
+<!--
+ * @Author: fxs bjnsfxs@163.com
+ * @Date: 2024-11-29
+ * @LastEditors: fxs bjnsfxs@163.com
+ * @LastEditTime: 2024-12-03
+ * @Description: 
+ * 
+-->
 <script setup lang="ts">
 import CustomTable from '@/components/table/CustomTable.vue'
 import HeaderCard from '@/components/dataAnalysis/HeaderCard.vue'
@@ -9,7 +17,13 @@ import { reactive } from 'vue'
 import { createDateRange, resetTimeToMidnight } from '@/utils/common'
 import { useAnalysis } from '@/hooks/useAnalysis'
 import { usePage } from '@/hooks/usePage'
-import { FilterType, type QueryInfo, type SelectInfo, type TableFieldInfo } from '@/types/table'
+import {
+  FilterType,
+  type QueryInfo,
+  type SelectInfo,
+  type TableFieldInfo,
+  type TableToolsConfig
+} from '@/types/table'
 import { FieldSpecialEffectType, TextType } from '@/types/tableText'
 import { formatDate } from '@/utils/common'
 
@@ -31,6 +45,7 @@ const requestConfig = reactive<ReqConfig>({
   }
 })
 
+// 分页设置
 const paginationConfig = reactive({
   limit: 15, // 每页展示个数
   currentPage: 1, // 当前页码
@@ -38,6 +53,14 @@ const paginationConfig = reactive({
   pageSizeList: [15, 30] // 页数大小列表
 })
 
+// 工具栏配置
+const tableToolsConfig: TableToolsConfig = {
+  add: false,
+  filterFields: true,
+  refresh: true,
+  download: false
+}
+
 const tableFieldsInfo = reactive<Array<TableFieldInfo>>([
   {
     name: 'adsScene',
@@ -224,7 +247,7 @@ watchPageChange(() => [selectInfo.pf, selectInfo.gid], backupSelect, updateSelec
         :request-config="requestConfig"
         :query-info="queryInfo"
         :open-filter-query="true"
-        :need-right-tools="true"
+        :tools="tableToolsConfig"
       ></CustomTable>
     </div>
   </div>

+ 23 - 2
src/views/Home/Analysis/AdvertisingUsers.vue

@@ -1,6 +1,19 @@
+<!--
+ * @Author: fxs bjnsfxs@163.com
+ * @Date: 2024-11-27
+ * @LastEditors: fxs bjnsfxs@163.com
+ * @LastEditTime: 2024-12-03
+ * @Description: 
+ * 
+-->
 <script setup lang="ts">
 import type { HeaderCardProps, ReqConfig } from '@/types/dataAnalysis'
-import type { QueryInfo, TableFieldInfo, TablePaginationSetting } from '@/types/table'
+import type {
+  QueryInfo,
+  TableFieldInfo,
+  TablePaginationSetting,
+  TableToolsConfig
+} from '@/types/table'
 import { FilterType } from '@/types/table'
 import { CustomFilterValueType } from '@/types/customFilter'
 
@@ -154,6 +167,14 @@ const pagingConfig = reactive<TablePaginationSetting>({
   pageSizeList: [20, 30]
 })
 
+// 工具栏配置
+const tableToolsConfig: TableToolsConfig = {
+  add: false,
+  filterFields: true,
+  refresh: true,
+  download: false
+}
+
 // 表格字段信息
 const tableFieldsInfo = reactive<Array<TableFieldInfo>>([
   {
@@ -259,7 +280,7 @@ watchPageChange(() => [selectInfo.pf, selectInfo.gid], backupSelect, updateAllRe
         :open-remote-query="true"
         :open-page-query="true"
         :open-filter-query="true"
-        :need-right-tools="true"
+        :tools="tableToolsConfig"
       ></Table>
     </div>
   </div>

+ 23 - 3
src/views/Home/Analysis/EventAnalysisTable.vue

@@ -1,6 +1,19 @@
+<!--
+ * @Author: fxs bjnsfxs@163.com
+ * @Date: 2024-09-18
+ * @LastEditors: fxs bjnsfxs@163.com
+ * @LastEditTime: 2024-12-03
+ * @Description: 
+ * 
+-->
 <script setup lang="ts">
 import type { ReqConfig } from '@/types/dataAnalysis'
-import type { TablePaginationSetting, TableFieldInfo, QueryInfo } from '@/types/table'
+import type {
+  TablePaginationSetting,
+  TableFieldInfo,
+  QueryInfo,
+  TableToolsConfig
+} from '@/types/table'
 
 import { FilterType } from '@/types/table'
 import { reactive, ref } from 'vue'
@@ -46,6 +59,14 @@ const pagingConfig = reactive<TablePaginationSetting>({
   pageSizeList: [20, 30]
 })
 
+// 工具栏配置
+const tableToolsConfig: TableToolsConfig = {
+  add: false,
+  filterFields: true,
+  refresh: true,
+  download: false
+}
+
 // 表格字段信息
 const tableFieldsInfo = reactive<Array<TableFieldInfo>>([
   {
@@ -165,8 +186,7 @@ watchPageChange(() => [props.startTime, props.endTime], backupDate, updateDate)
         :query-info="eventTableFilterInfo"
         :pagination-config="pagingConfig"
         :table-fields-info="tableFieldsInfo"
-        :need-left-tools="false"
-        :need-right-tools="true"
+        :tools="tableToolsConfig"
       >
         <template #tableOperation>
           <el-table-column label="操作" align="center">

+ 24 - 2
src/views/Home/Analysis/UserBehavior.vue

@@ -1,6 +1,20 @@
+<!--
+ * @Author: fxs bjnsfxs@163.com
+ * @Date: 2024-11-27
+ * @LastEditors: fxs bjnsfxs@163.com
+ * @LastEditTime: 2024-12-03
+ * @Description: 
+ * 
+-->
 <script setup lang="ts">
 import type { HeaderCardProps, ReqConfig } from '@/types/dataAnalysis'
-import type { QueryInfo, SelectInfo, TableFieldInfo, TablePaginationSetting } from '@/types/table'
+import type {
+  QueryInfo,
+  SelectInfo,
+  TableFieldInfo,
+  TablePaginationSetting,
+  TableToolsConfig
+} from '@/types/table'
 import { FilterType } from '@/types/table'
 import { CustomFilterValueType } from '@/types/customFilter'
 
@@ -169,6 +183,14 @@ const pagingConfig = reactive<TablePaginationSetting>({
   pageSizeList: [20, 30]
 })
 
+// 工具栏配置
+const tableToolsConfig: TableToolsConfig = {
+  add: false,
+  filterFields: true,
+  refresh: true,
+  download: false
+}
+
 // 表格字段信息
 const tableFieldsInfo = reactive<Array<TableFieldInfo>>([
   {
@@ -305,7 +327,7 @@ watchPageChange(() => [selectInfo.pf, selectInfo.gid], backupSelect, updateAllRe
         :open-remote-query="true"
         :open-page-query="true"
         :open-filter-query="true"
-        :need-right-tools="true"
+        :tools="tableToolsConfig"
       ></Table>
     </div>
   </div>

+ 18 - 2
src/views/Home/InfoManage/GameManageView.vue

@@ -1,8 +1,17 @@
+<!--
+ * @Author: fxs bjnsfxs@163.com
+ * @Date: 2024-08-20
+ * @LastEditors: fxs bjnsfxs@163.com
+ * @LastEditTime: 2024-12-03
+ * @Description: 
+ * 
+-->
 <script setup lang="ts">
 import type { TablePaginationSetting, TableFieldInfo, QueryInfo } from '@/types/table'
 import type { FormRules } from 'element-plus'
 import type { DialogConfig } from '@/types/dialog'
 import type { FormField } from '@/types/form'
+import type { TableToolsConfig } from '@/types/table'
 
 import { FormFieldType } from '@/types/form'
 import { FilterType } from '@/types/table'
@@ -37,6 +46,14 @@ const paginationConfig: TablePaginationSetting = {
   pageSizeList: [15, 30] // 页数大小列表
 }
 
+// 工具栏配置
+const tableToolsConfig: TableToolsConfig = {
+  add: true,
+  filterFields: true,
+  refresh: true,
+  download: false
+}
+
 // 字段信息
 const fieldsInfo = reactive<Array<TableFieldInfo>>([
   {
@@ -307,8 +324,7 @@ onMounted(() => {
       ref="gameTableRef"
       :need-rowindex="true"
       :need-average="false"
-      :need-right-tools="true"
-      :need-left-tools="true"
+      :tools="tableToolsConfig"
       :open-filter-query="true"
       :open-page-query="true"
       :open-remote-query="false"

+ 23 - 5
src/views/Home/InfoManage/PlayerManageView.vue

@@ -1,5 +1,19 @@
+<!--
+ * @Author: fxs bjnsfxs@163.com
+ * @Date: 2024-08-20
+ * @LastEditors: fxs bjnsfxs@163.com
+ * @LastEditTime: 2024-12-03
+ * @Description: 
+ * 
+-->
 <script setup lang="ts">
-import type { TablePaginationSetting, QueryInfo, SelectInfo, TableFieldInfo } from '@/types/table'
+import type {
+  TablePaginationSetting,
+  QueryInfo,
+  SelectInfo,
+  TableFieldInfo,
+  TableToolsConfig
+} from '@/types/table'
 import type { FormRules } from 'element-plus'
 import type { FormField } from '@/types/form'
 import type { DialogConfig } from '@/types/dialog'
@@ -71,8 +85,13 @@ const allPf: Array<SelectInfo> = [
   }
 ]
 
-// 所有游戏信息
-// const allGameInfo = reactive<Array<SelectInfo>>([])
+// 工具栏配置
+const tableToolsConfig: TableToolsConfig = {
+  add: false,
+  filterFields: true,
+  refresh: true,
+  download: false
+}
 
 // 查询字段设置
 const queryInfo = reactive<Array<QueryInfo>>([
@@ -260,8 +279,7 @@ watchPageChange(() => [selectInfo.gid], backupSelect, updateSelect)
       ref="playerTableRef"
       :need-rowindex="true"
       :need-average="false"
-      :need-right-tools="true"
-      :need-left-tools="false"
+      :tools="tableToolsConfig"
       :open-page-query="true"
       :open-filter-query="true"
       :table-fields-info="fieldsInfo"