Pārlūkot izejas kodu

Merge branch 'dev-ly' into dev-cmn

cmy 20 stundas atpakaļ
vecāks
revīzija
6a7c095fc7
1 mainītis faili ar 43 papildinājumiem un 33 dzēšanām
  1. 43 33
      src/views/marketing/config/components/push.vue

+ 43 - 33
src/views/marketing/config/components/push.vue

@@ -57,9 +57,9 @@
 			class="flex flex-wrap mt-4 w-1/2">
 			<el-form-item label="推送应用" prop="pushApp" class="w-full">
 				<el-select v-model="formData.pushApp" placeholder="请选择推送方式" multiple collapse-tags collapse-tags-tooltip
-					:max-collapse-tags="4" filterable remote class="w-full" :value-key="'appId'">
+					:max-collapse-tags="4" filterable remote class="w-full">
 					<el-option v-for="item in appOptions" :key="item.value" :label="item.label"
-						:value="{ id: item.id, appId: item.value }" />
+						:value="item.value" />
 				</el-select>
 			</el-form-item>
 			<el-form-item label="主动推送" prop="autoPush" class="w-1/2">
@@ -160,7 +160,7 @@ const getAppListData = async () => {
 		};
 	});
 };
-
+getAppListData();
 // // 表单校验规则
 const dataRules = reactive({
 	ruleName: [{ required: true, message: '规则名称不能为空', trigger: 'blur' }],
@@ -453,19 +453,21 @@ const handleInputConfirm = (type: string) => {
 	}
 };
 
-// 规范化 pushApp 值为 { id, appId } 数组
+// 修改 normalizePushApp 函数
 function normalizePushApp(input: any[]): Array<{ id: any; appId: any }> {
-	if (!Array.isArray(input)) return [];
-	return input
-		.map((item: any) => {
-			if (item && typeof item === 'object' && 'appId' in item && 'id' in item) {
-				return { id: item.id, appId: item.appId };
-			}
-			const appId = typeof item === 'object' && 'value' in item ? item.value : item;
-			const found = appOptions.value.find((opt: any) => opt.value === appId);
-			return found ? { id: found.id, appId: found.value } : null;
-		})
-		.filter((v: any): v is { id: any; appId: any } => v !== null);
+  if (!Array.isArray(input)) return [];
+  
+  // 如果输入是字符串数组(appId),转换为对象数组
+  return input.map((item: any) => {
+    if (typeof item === 'string') {
+      // 根据 appId 查找完整信息
+      const found = appOptions.value.find((opt: any) => opt.value === item);
+      return found ? { id: found.id, appId: found.value } : { id: null, appId: item };
+    } else if (item && typeof item === 'object' && 'appId' in item) {
+      return { id: item.id, appId: item.appId };
+    }
+    return { id: null, appId: String(item) };
+  });
 }
 
 // 根据选择的 pushApp 派生 pushBundle(去重)
@@ -578,25 +580,33 @@ const formatNum = (value: string | number = 0) => {
 	}
 	return '';
 };
-
+// 修改 watch 部分
 watch(
-	() => props.rowData,
-	(val) => {
-		if (val) {
-			formData.value = {
-				...props.rowData,
-				action: props.rowData?.action || '1',
-				pushFrequency: formatNum(props.rowData?.pushFrequency),
-				pushApp: normalizePushApp(props.rowData.pushApp || []),
-				pushBundle: props.rowData.pushBundle || [],
-			};
-			ipData.value = props.rowData.ip || [];
-			domainData.value = props.rowData.domain || [];
-			regionData.value = props.rowData.pushAddr || ['全部国家'];
-			oldUrl.value = props.rowData.pushContent;
-			getAppListData();
-		}
-	}
+  () => props.rowData,
+  async (val) => {
+    if (val) {
+      // 确保 appOptions 已加载
+      if (appOptions.value.length === 0) {
+        await getAppListData();
+      }
+      
+      formData.value = {
+        ...val,
+        action: val?.action || '1',
+        pushFrequency: formatNum(val?.pushFrequency),
+        pushApp: val.pushApp ? val.pushApp.map((app: any) => {
+          // 如果是对象,提取 appId;如果是字符串,直接使用
+          return typeof app === 'object' ? app.appId : app;
+        }) : [],
+        pushBundle: val.pushBundle || [],
+      };
+      ipData.value = val.ip || [];
+      domainData.value = val.domain || [];
+      regionData.value = val.pushAddr || ['全部国家'];
+      oldUrl.value = val.pushContent;
+    }
+  },
+  { deep: false } // 避免深度监听
 );
 </script>
 <style lang="scss"></style>