Quellcode durchsuchen

增加淘宝默认转链图标

dodo hold vor 2 Wochen
Ursprung
Commit
48f657368d
3 geänderte Dateien mit 45 neuen und 14 gelöschten Zeilen
  1. 1 0
      src/api/taobao.ts
  2. 8 0
      src/views/settings/config.vue
  3. 36 14
      src/views/site/tracksReport.vue

+ 1 - 0
src/api/taobao.ts

@@ -36,6 +36,7 @@ export interface UpdateConfigModel {
     tk_limit_per_ip_24h: number;
     tk_limit_per_oaid_24h: number;
     tk_parse_retry_count: number;
+    tk_parse_default_icon: string;
 
     cpsIgnorePercentageCity: string;
     cps_limit_per_ip_24h: number;

+ 8 - 0
src/views/settings/config.vue

@@ -148,6 +148,13 @@
                                         <a-input-number v-model="formData.tk_parse_retry_count" :min="0"
                                             placeholder="转链失败重试次数" />
                                     </a-form-item>
+                                    
+
+                                    <a-form-item field="tk_parse_default_icon" label="默认转链图标">
+                                        <a-input v-model="formData.tk_parse_default_icon" />
+                                    </a-form-item>
+
+
                                 </a-tab-pane>
                                 <a-tab-pane key="jd" title="京东">
                                     <a-form-item field="jdIgnorePercentage" label="放弃流量" :rules="[{ required: true }]">
@@ -363,6 +370,7 @@ const formData = ref<UpdateConfigModel>({
     tk_limit_per_ip_24h: 0,
     tk_limit_per_oaid_24h: 0,
     tk_parse_retry_count: 0,
+    tk_parse_default_icon: '',
 
     cpsIgnorePercentageCity: '',
     cps_limit_per_ip_24h: 0,

+ 36 - 14
src/views/site/tracksReport.vue

@@ -32,6 +32,9 @@
                     v-model="formModel.platform"
                     class="filter-control"
                     placeholder="平台"
+                    multiple
+                    :max-tag-count="2"
+                    tag-nowrap
                     allow-clear
                     @change="onPlatformChange"
                 >
@@ -46,8 +49,10 @@
                 <a-select
                     v-model="formModel.typename"
                     class="filter-control"
-                    :disabled="!formModel.platform"
-                    :placeholder="formModel.platform ? '类型' : '先选平台'"
+                    :disabled="!formModel.platform.length"
+                    :placeholder="
+                        formModel.platform.length ? '类型' : '先选平台'
+                    "
                     allow-clear
                     @change="onLocalFilterChange"
                 >
@@ -220,6 +225,8 @@
                             v-model="formModel.platform"
                             class="link-section-filter"
                             placeholder="平台"
+                            multiple
+                            :max-tag-count="1"
                             allow-clear
                             size="small"
                             @change="onPlatformChange"
@@ -627,6 +634,7 @@
     const CHANNEL_TB = 0;
     const CHANNEL_JD = 1;
     const CHANNEL_PDD = 3;
+    const defaultPlatforms = ['淘宝', '拼多多', '京东'];
     const defaultDimensionSortOrder = 1000;
     const dimensionSortRules: DimensionSortRule[] = [
         { source: '淘宝', scene: 'os', order: 10 },
@@ -909,7 +917,7 @@
     const dateRange = ref<string[]>(defaultDateRange());
     const formModel = reactive({
         event_type: '',
-        platform: '',
+        platform: [...defaultPlatforms],
         typename: '',
         scene: '',
         riskStrategy: '',
@@ -1029,12 +1037,21 @@
     );
 
     const typenameOptions = computed(() => {
-        if (!formModel.platform) return [];
-        return Array.from(platformTypeMap.value.get(formModel.platform) || [])
+        if (!formModel.platform.length) return [];
+        const types = new Set<string>();
+        formModel.platform.forEach((platform) => {
+            platformTypeMap.value
+                .get(platform)
+                ?.forEach((typename) => types.add(typename));
+        });
+        return Array.from(types)
             .sort((left, right) => left.localeCompare(right, 'zh-Hans-CN'))
             .map((value) => ({ label: value, value }));
     });
 
+    const matchesPlatform = (source: string) =>
+        !formModel.platform.length || formModel.platform.includes(source);
+
     const riskStrategyOptions = computed(() => {
         const set = new Set<string>();
         const append = (
@@ -1042,7 +1059,7 @@
             typename: string,
             riskStrategy: string
         ) => {
-            if (formModel.platform && source !== formModel.platform) return;
+            if (!matchesPlatform(source)) return;
             if (formModel.typename && typename !== formModel.typename) return;
             if (riskStrategy) set.add(riskStrategy);
         };
@@ -1086,7 +1103,7 @@
             const scene = getSceneLabel(record);
             const uniqueId = getUniqueLabel(record);
 
-            if (formModel.platform && source !== formModel.platform) {
+            if (!matchesPlatform(source)) {
                 return false;
             }
             if (formModel.typename && typename !== formModel.typename) {
@@ -1119,7 +1136,7 @@
             const { source, typename, scene, uniqueId } =
                 getTrackDimensionMeta(record);
 
-            if (formModel.platform && source !== formModel.platform) {
+            if (!matchesPlatform(source)) {
                 return false;
             }
             if (formModel.typename && typename !== formModel.typename) {
@@ -1151,7 +1168,7 @@
             const typename = getParseMetricTypeLabel(record);
             const scene = getParseMetricSceneLabel(record);
 
-            if (formModel.platform && source !== formModel.platform) {
+            if (!matchesPlatform(source)) {
                 return false;
             }
             if (formModel.typename && typename !== formModel.typename) {
@@ -2043,7 +2060,7 @@
     const resetFilters = () => {
         dateRange.value = defaultDateRange();
         formModel.event_type = '';
-        formModel.platform = '';
+        formModel.platform = [...defaultPlatforms];
         formModel.typename = '';
         formModel.scene = '';
         formModel.riskStrategy = '';
@@ -2317,7 +2334,10 @@
     .filter-bar {
         display: grid;
         grid-template-columns:
-            270px 140px 140px 140px 140px minmax(180px, 1fr)
+            minmax(240px, 1fr)
+            minmax(150px, 1fr)
+            minmax(220px, 1.25fr)
+            repeat(3, minmax(150px, 1fr))
             auto;
         gap: 10px;
         align-items: center;
@@ -2424,7 +2444,7 @@
 
     .link-section-tools {
         display: grid;
-        grid-template-columns: repeat(2, 180px);
+        grid-template-columns: 220px 180px;
         gap: 8px;
         flex: 0 0 auto;
         align-items: center;
@@ -2435,7 +2455,7 @@
     }
 
     .link-section-filter {
-        width: 180px;
+        width: 100%;
         min-width: 0;
     }
 
@@ -2697,7 +2717,7 @@
         margin-top: 4px;
     }
 
-    @media (max-width: 1200px) {
+    @media (max-width: 1440px) {
         .filter-bar {
             grid-template-columns: repeat(3, minmax(0, 1fr));
         }
@@ -2705,7 +2725,9 @@
         .filter-actions {
             justify-content: flex-start;
         }
+    }
 
+    @media (max-width: 1200px) {
         .metric-grid {
             grid-template-columns: repeat(2, minmax(0, 1fr));
         }