Browse Source

feat(system/gameScore): 添加组别筛选功能到加分数据管理

添加了组别筛选下拉选择器,允许用户按组别筛选加分数据,
更新API接口支持rgId参数传递,并增加相应的分组数据获取逻辑。
zhou 3 tuần trước cách đây
mục cha
commit
3b7bce89d2

+ 5 - 5
src/api/system/gameScore/index.ts

@@ -151,7 +151,7 @@ export const exportScoresSummary = (eventId: string | number) => {
  * 获取加分数据
  * @param params 查询参数
  */
-export const getBonusData = (params: { eventId: string | number }) => {
+export const getBonusData = (params: { eventId: string | number; rgId?: string | number }) => {
   return request({
     url: '/system/gameScore/getBonusData',
     method: 'get',
@@ -175,10 +175,10 @@ export const updateBonusData = (data: { eventId: string | number; data: any[] })
  * 导出加分Excel
  * @param data 导出数据
  */
-export const exportBonusExcel = (data: { 
-  eventId: string | number; 
-  data: any[]; 
-  projects: any[] 
+export const exportBonusExcel = (data: {
+  eventId: string | number;
+  data: any[];
+  projects: any[]
 }) => {
   return request({
     url: '/system/gameScore/exportBonusExcel',

+ 45 - 6
src/views/system/gameScore/gameScoreBonus.vue

@@ -18,14 +18,30 @@
               <el-icon><Refresh /></el-icon> 刷新数据
             </el-button>
           </el-col>
+          <!-- 组别筛选 -->
+          <el-col :span="4">
+            <el-select 
+              v-model="selectedRankGroupId" 
+              placeholder="按组别筛选" 
+              clearable 
+              filterable
+              style="width: 100%"
+              @change="loadBonusData"
+            >
+              <el-option
+                v-for="item in rankGroupOptions"
+                :key="item.rgId"
+                :label="item.rgName"
+                :value="item.rgId"
+              />
+            </el-select>
+          </el-col>
           <!-- 倒计时显示区域 -->
-          <el-col :span="6">
+          <el-col :span="4">
             <div class="countdown-info">
-              <el-button size="default" type="primary">
-                <!-- <el-icon class="countdown-icon"><Timer /></el-icon> -->
+              <el-button size="default" type="primary" style="width: 100%">
                 {{ countdownSeconds }}秒后刷新
               </el-button>
-              <!-- <span class="countdown-description">数据将自动刷新</span> -->
             </div>
           </el-col>
           <!-- <right-toolbar v-model:showSearch="showSearch" @queryTable="loadBonusData" ></right-toolbar> -->
@@ -110,10 +126,10 @@
 <script setup name="GameScoreBonus" lang="ts">
 import { ref, onMounted, onUnmounted, getCurrentInstance, toRefs } from 'vue';
 import { useRouter } from 'vue-router';
-import { Timer } from '@element-plus/icons-vue';
 import { getBonusData, updateBonusData, exportBonusExcel } from '@/api/system/gameScore';
 import { useGameEventStore } from '@/store/modules/gameEvent';
 import type { ComponentInternalInstance } from 'vue';
+import { listRankGroup } from '@/api/system/rankGroup';
 
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const router = useRouter();
@@ -130,6 +146,10 @@ const bonusDataList = ref<any[]>([]);
 const bonusProjectList = ref<any[]>([]);
 const selectedBonusRows = ref<any[]>([]);
 
+// 分组筛选相关
+const rankGroupOptions = ref<any[]>([]);
+const selectedRankGroupId = ref<string | number | null>(null);
+
 // 列显隐数据
 const columns = ref<FieldOption[]>([
   { key: 0, label: '序号', visible: true },
@@ -186,6 +206,22 @@ const startAutoRefresh = () => {
   console.log(`自动刷新已开启,每${autoRefreshSeconds.value}秒刷新一次`);
 };
 
+// 获取分组选项
+const loadRankGroupOptions = async () => {
+  try {
+    const event = gameEventStore.defaultEventInfo;
+    if (!event?.eventId) return;
+    
+    const res = await listRankGroup({
+      eventId: event.eventId,
+      status: '0'
+    });
+    rankGroupOptions.value = res.rows;
+  } catch (error) {
+    console.error('获取分组列表失败:', error);
+  }
+};
+
 // 加载加分数据
 const loadBonusData = async () => {
   bonusLoading.value = true;
@@ -199,7 +235,8 @@ const loadBonusData = async () => {
     }
     
     const response = await getBonusData({
-      eventId: eventId
+      eventId: eventId,
+      rgId: selectedRankGroupId.value || undefined
     });
     
     bonusDataList.value = response.data.rows || [];
@@ -432,6 +469,8 @@ onUnmounted(() => {
 onMounted(async () => {
   // 先加载默认赛事信息
   await gameEventStore.fetchDefaultEvent();
+  // 加载分组信息
+  loadRankGroupOptions();
   // 然后加载加分数据
   await loadBonusData();
   // 开启自动刷新