jcq 1 week geleden
bovenliggende
commit
6133ef36b4
3 gewijzigde bestanden met toevoegingen van 73 en 67 verwijderingen
  1. 2 2
      .env
  2. 0 1
      src/views/home/echarts/keyword-frequency.vue
  3. 71 64
      src/views/marketing/config/components/push.vue

+ 2 - 2
.env

@@ -5,9 +5,9 @@ VITE_IS_MICRO= true
 VITE_PUBLIC_PATH = /
 
 # 后端请求前缀
-VITE_API_URL = http://192.168.10.101:9999 
+# VITE_API_URL = http://192.168.10.101:9999 
 # VITE_API_URL = http://192.168.3.118:9999
-#  VITE_API_URL = http://192.168.3.17:9999
+ VITE_API_URL = http://192.168.3.17:9999
 #  VITE_API_URL = http://16.162.25.197:9999
 
 # OAUTH2 密码模式客户端信息

+ 0 - 1
src/views/home/echarts/keyword-frequency.vue

@@ -17,7 +17,6 @@ import * as echarts from 'echarts';
 const chartData = ref([
 	{ name: '下载', value: 30, color: '#ff6384' },
 	{ name: '宅六', value: 10, color: '#4bc0c0' },
-
 	{ name: '张三', value: 20, color: '#36a2eb' },
 	{ name: '里斯', value: 25, color: '#cc65fe' },
 	{ name: '王五', value: 15, color: '#ffce56' },

+ 71 - 64
src/views/marketing/config/components/push.vue

@@ -4,12 +4,17 @@
 			<div class="flex items-start">
 				<label class="w-[65px] leading-8 text-right">地区</label>
 				<div class="flex gap-2 ml-2 flex-wrap w-57vw]">
-					<el-tag v-for="(tag, index) in regionData" :key="index" size="large" closable
-						:disable-transitions="false" @close="handleClose(tag, 'region')">
+					<el-tag
+						v-for="(tag, index) in regionData"
+						:key="index"
+						size="large"
+						closable
+						:disable-transitions="false"
+						@close="handleClose(tag, 'region')"
+					>
 						{{ tag == 'All' ? '全部国家' : tag }}
 					</el-tag>
-					<ChineseRegionSelector v-if="regionInputVisible" v-model="regionData" showAll
-						@update:modelValue="handleRegionDataUpdate" />
+					<ChineseRegionSelector v-if="regionInputVisible" v-model="regionData" showAll @update:modelValue="handleRegionDataUpdate" />
 					<el-button v-else class="button-new-tag" @click="showRegionInput"> 添加地区</el-button>
 					<!-- 注册隐藏的表单项以启用校验 -->
 					<el-form-item prop="region" style="display: none"></el-form-item>
@@ -53,13 +58,20 @@
 				</div>
 			</div>
 		</div> -->
-		<el-form ref="ruleFormRef" :model="formData" :rules="dataRules" label-width="90px"
-			class="flex flex-wrap mt-4 w-1/2">
+		<el-form ref="ruleFormRef" :model="formData" :rules="dataRules" label-width="90px" 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">
-					<el-option v-for="item in appOptions" :key="item.value" :label="item.label"
-						:value="item.value" />
+				<el-select
+					v-model="formData.pushApp"
+					placeholder="请选择推送方式"
+					multiple
+					collapse-tags
+					collapse-tags-tooltip
+					:max-collapse-tags="4"
+					filterable
+					remote
+					class="w-full"
+				>
+					<el-option v-for="item in appOptions" :key="item.value" :label="item.label" :value="item.value" />
 				</el-select>
 			</el-form-item>
 			<el-form-item label="主动推送" prop="autoPush" class="w-1/2">
@@ -67,8 +79,7 @@
 			</el-form-item>
 
 			<el-form-item label="推送方式" prop="action" class="w-1/2">
-				<JDictSelect v-model:value="formData.action" placeholder="请选择推送方式" dictType="pushMode"
-					:styleClass="'w-full'" />
+				<JDictSelect v-model:value="formData.action" placeholder="请选择推送方式" dictType="pushMode" :styleClass="'w-full'" />
 			</el-form-item>
 
 			<!-- <el-form-item label="推送频率" prop="pushFrequency" class="w-1/2">
@@ -92,8 +103,7 @@
 				<el-input v-model="formData.pushContent" type="text" placeholder="请输入推送内容" />
 			</el-form-item>
 		</el-form>
-		<el-button type="primary" class="ml-5 mt-4 w-[80px]" @click="onSubmit"
-			:disabled="loading">{{ t('common.saveBtn') }}</el-button>
+		<el-button type="primary" class="ml-5 mt-4 w-[80px]" @click="onSubmit" :disabled="loading">{{ t('common.saveBtn') }}</el-button>
 	</div>
 </template>
 
@@ -113,7 +123,7 @@ const props = defineProps({
 	},
 	rowData: {
 		type: Object,
-		default: () => { },
+		default: () => {},
 	},
 });
 
@@ -145,22 +155,22 @@ const formData = ref<any>({
 	delayPush: '',
 	autoPush: false,
 	pushApp: [],
-	pushBundle: []
+	pushBundle: [],
 });
 const appOptions = ref<any[]>([]);
 const getAppListData = async () => {
 	const res = await getAppList();
 	// console.log(res);
-	
+
 	const data = res.data;
 	console.log(data);
-	
+
 	appOptions.value = data.map((item: any, index: number) => {
 		return {
 			label: item.appName,
 			value: item.appId,
 			id: item.id,
-			bundle: item.bundle || ''
+			bundle: item.bundle || '',
 		};
 	});
 };
@@ -459,19 +469,19 @@ const handleInputConfirm = (type: string) => {
 
 // 修改 normalizePushApp 函数
 function normalizePushApp(input: any[]): Array<{ id: any; appId: any }> {
-  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) };
-  });
+	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(去重)
@@ -493,11 +503,7 @@ const handleRegionDataUpdate = (newRegionData: any[]) => {
 		.map((item: any) => {
 			if (item || item == '全部国家') {
 				return (
-					(item?.city
-						? `${item.country} - ${item.state} - ${item.city}`
-						: item?.state
-							? `${item.country} - ${item.state}`
-							: item?.country) || item
+					(item?.city ? `${item.country} - ${item.state} - ${item.city}` : item?.state ? `${item.country} - ${item.state}` : item?.country) || item
 				);
 			}
 			return false;
@@ -551,11 +557,9 @@ const onSubmit = async () => {
 		pushContent: getpushContent(),
 		pushType: false,
 		pushFrequency: pushFrequency.toString(),
-		pushApp: normalizePushApp(formData.value.pushApp),
 		pushBundle: derivePushBundle(normalizePushApp(formData.value.pushApp)),
 	};
 
-
 	if (!formData.value.pushContent) {
 		return useMessage().error(formData.value.pushType ? '推送图片不能为空' : '推送内容不能为空');
 	}
@@ -564,6 +568,7 @@ const onSubmit = async () => {
 
 		await saveRule({
 			...formData.value,
+			pushApp: normalizePushApp(formData.value.pushApp),
 			pushFrequency: pushFrequency.toString(),
 		});
 		useMessage().success(t('common.editSuccessText'));
@@ -586,31 +591,33 @@ const formatNum = (value: string | number = 0) => {
 };
 // 修改 watch 部分
 watch(
-  () => 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 } // 避免深度监听
+	() => 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>