Преглед изворни кода

```
feat(history): 添加点击节流控制并优化数据重置逻辑

- 为 table 和 tableNumber 的点击事件添加节流控制,防止用户频繁点击- 在获取数据失败或列表清空时,统一重置所有显示字段及分页信息
- 修复类型定义中 delayCardTime 和 delayCardNum 的类型为 string

feat(tournaments): 表单初始化补充 delayCardTime 和 delayCardNum 字段

- 在 tournaments 表单重置时,同步初始化 delayCardTime 和 delayCardNum 字段
- 统一 delayCardTime 和 delayCardNum 在类型定义中的类型为 stringrefactor(config):修正注释格式问题

-修复 config 页面中被注释的 table-column 代码格式缩进问题```

fugui001 пре 3 месеци
родитељ
комит
659bd1c5f1

+ 5 - 2
src/api/system/business/tournaments/types.ts

@@ -82,6 +82,9 @@ export interface TournamentsVO {
   tournamentsBiId?: string;
   signNum?: number;
   isComplaints?: boolean;
+
+  delayCardTime?: string;
+  delayCardNum?: string;
 }
 
 export interface TournamentsForm extends BaseEntity {
@@ -158,8 +161,8 @@ export interface TournamentsForm extends BaseEntity {
   competitionIcon?: string;
   itemsPrizeList?: ItemsPrize[];
   robotCount?: number;
-  delayCardNum?: number;
-  delayCardTime?: number;
+  delayCardNum?: string;
+  delayCardTime?: string;
 }
 
 export interface ItemsPrize {

+ 1 - 1
src/views/system/business/config/index.vue

@@ -54,7 +54,7 @@
       </template>
 
       <el-table v-loading="loading" border :data="configList" @selection-change="handleSelectionChange">
-<!--        <el-table-column type="selection" width="55" align="center" />-->
+        <!--        <el-table-column type="selection" width="55" align="center" />-->
         <el-table-column label="" align="center" prop="id" v-if="false" />
         <el-table-column label="比赛名" align="center" prop="name" />
         <el-table-column label="比赛Logo" align="center">

+ 36 - 0
src/views/system/business/history/index.vue

@@ -661,10 +661,19 @@ watch(
   },
   { deep: true, immediate: true }
 );
+// 添加节流时间戳
+const lastClickTime = ref(0);
+const CLICK_DELAY = 500; // 500ms 内不能重复点击
 
 const selectedTableId = ref<number | null>(null);
 
 const handleTableClick = async (table: any) => {
+  const now = Date.now();
+  if (now - lastClickTime.value < CLICK_DELAY) {
+    proxy?.$modal.msgError('点击过快');
+    return;
+  }
+  lastClickTime.value = now;
   // ✅ 加上 async
   selectedTableId.value = table.tableId;
   //queryParams.value.historyId = table.id;
@@ -701,6 +710,13 @@ const handleTableClick = async (table: any) => {
 
 const selectedTableHandNumberId = ref<number | null>(null);
 const handleTableNumberClick = async (table: any) => {
+  const now = Date.now();
+  if (now - lastClickTime.value < CLICK_DELAY) {
+    console.log('点击过快,请稍后再试');
+    proxy?.$modal.msgError('点击过快,请稍后再试');
+    return;
+  }
+  lastClickTime.value = now;
   // ✅ 加上 async
   //selectedTableId.value = table.tableId;
   selectedTableHandNumberId.value = table.handNumber; // 添加这行代码
@@ -775,11 +791,31 @@ const handlePlayerSearch = async () => {
         await getList();
       } else {
         tableNumberData.value = [];
+        // 清空所有显示字段
+        beginTimeOrEndTime.value = '';
+        blindLevelIds.value = '';
+        beginPeopleIds.value = '';
+        endPeopleIds.value = '';
+        publicInfoText.value = '';
+        blindsInfoText.value = '';
         historyList.value = [];
         resetQueryParams();
+        // 重置分页信息
+        total.value = 0;
+        queryParams.value.pageNum = 1;
       }
     } else {
       historyList.value = [];
+      // 清空所有显示字段
+      beginTimeOrEndTime.value = '';
+      blindLevelIds.value = '';
+      beginPeopleIds.value = '';
+      endPeopleIds.value = '';
+      publicInfoText.value = '';
+      blindsInfoText.value = '';
+      // 重置分页信息
+      total.value = 0;
+      queryParams.value.pageNum = 1;
       //resetQueryParams();
       proxy?.$modal.msgError('获取桌次数据失败');
     }

+ 4 - 0
src/views/system/business/tournaments/index.vue

@@ -1430,6 +1430,10 @@ const handleCopy = async (row?: TournamentsVO) => {
   form.value.status = 0;
   form.value.id = null;
   form.value.levelDuration = null;
+
+  form.value.delayCardTime = res.data.delayCardTime;
+  form.value.delayCardNum = res.data.delayCardNum;
+
   competitionIcon.value = res.data.competitionIcon;
   // 处理奖励表单数据
   const prizeItems = res.data.itemsPrizeList || [];