flyzto 1 週間 前
コミット
0fb01ac547
1 ファイル変更15 行追加1 行削除
  1. 15 1
      web/apps/web-antd/src/views/match/odds-curve/index.vue

+ 15 - 1
web/apps/web-antd/src/views/match/odds-curve/index.vue

@@ -150,6 +150,19 @@ const marketOptionGroups = computed(() => {
   })).filter((group) => group.options.length);
 });
 
+const getGroupSelectedMarkets = (options: Array<{ value: string }>) => {
+  const values = new Set(options.map((option) => option.value));
+  return selectedMarkets.value.filter((key) => values.has(key));
+};
+
+const updateGroupSelectedMarkets = (options: Array<{ value: string }>, values: string[]) => {
+  const groupValues = new Set(options.map((option) => option.value));
+  selectedMarkets.value = [
+    ...selectedMarkets.value.filter((key) => !groupValues.has(key)),
+    ...values,
+  ];
+};
+
 const selectedMarket = computed({
   get: () => selectedMarkets.value[0],
   set: (key?: string) => {
@@ -465,8 +478,9 @@ onMounted(() => {
             <span class="market-platform">{{ group.label }}</span>
             <CheckboxGroup
               v-if="isMultiSelect"
-              v-model:value="selectedMarkets"
               :options="group.options"
+              :value="getGroupSelectedMarkets(group.options)"
+              @change="(values) => updateGroupSelectedMarkets(group.options, values as string[])"
             />
             <RadioGroup v-else v-model:value="selectedMarket" :options="group.options" />
           </div>