wkw hace 6 meses
padre
commit
04eacee0df

+ 22 - 6
src/views/index/indexCompany.vue

@@ -656,22 +656,38 @@
 			},
 			parseSkills(str) {
 				if (!str) return [];
+
 				try {
+					// ✅ 如果是多个 JSON 数组拼接:比如 ["A"],["B"]
+					if (str.includes('],[')) {
+						const wrapped = `[${str}]`; // 变成 [["A"],["B"]]
+						const parsed = JSON.parse(wrapped);
+						return [...new Set(parsed.flat())]; // 扁平化 + 去重
+					}
+
+					// ✅ 正常的单个 JSON 数组字符串
 					const parsed = JSON.parse(str);
 					if (Array.isArray(parsed)) {
-						return parsed;
+						return [...new Set(parsed)];
 					}
 				} catch (e) {
-
+					// 非 JSON 格式的情况继续往下处理
 				}
+
+				// ✅ 替换中文逗号
 				str = str.replace(/,/g, ',');
-				// 判断分隔符
+
+				// ✅ 支持多种分隔符
+				let arr = [];
 				if (str.includes('/')) {
-					return str.split('/').filter(Boolean);
+					arr = str.split('/');
 				} else if (str.includes(',')) {
-					return str.split(',').filter(Boolean);
+					arr = str.split(',');
+				} else {
+					arr = [str];
 				}
-				return [str];
+
+				return [...new Set(arr.map(s => s.trim()).filter(Boolean))];
 			},
 			//获取app下载地址
 		getAppDown() {

+ 22 - 6
src/views/jilu/myCollect.vue

@@ -113,22 +113,38 @@
 		methods: {
 			parseSkills(str) {
 				if (!str) return [];
+
 				try {
+					// ✅ 如果是多个 JSON 数组拼接:比如 ["A"],["B"]
+					if (str.includes('],[')) {
+						const wrapped = `[${str}]`; // 变成 [["A"],["B"]]
+						const parsed = JSON.parse(wrapped);
+						return [...new Set(parsed.flat())]; // 扁平化 + 去重
+					}
+
+					// ✅ 正常的单个 JSON 数组字符串
 					const parsed = JSON.parse(str);
 					if (Array.isArray(parsed)) {
-						return parsed;
+						return [...new Set(parsed)];
 					}
 				} catch (e) {
-
+					// 非 JSON 格式的情况继续往下处理
 				}
+
+				// ✅ 替换中文逗号
 				str = str.replace(/,/g, ',');
-				// 判断分隔符
+
+				// ✅ 支持多种分隔符
+				let arr = [];
 				if (str.includes('/')) {
-					return str.split('/').filter(Boolean);
+					arr = str.split('/');
 				} else if (str.includes(',')) {
-					return str.split(',').filter(Boolean);
+					arr = str.split(',');
+				} else {
+					arr = [str];
 				}
-				return [str];
+
+				return [...new Set(arr.map(s => s.trim()).filter(Boolean))];
 			},
 			goDetailst(item) {
 				if (localStorage.getItem('token')) {

+ 22 - 6
src/views/search/index.vue

@@ -1179,22 +1179,38 @@ export default {
 		// 解析技能标签字符串为数组
 		parseSkills(str) {
 			if (!str) return [];
+
 			try {
+				// ✅ 如果是多个 JSON 数组拼接:比如 ["A"],["B"]
+				if (str.includes('],[')) {
+					const wrapped = `[${str}]`; // 变成 [["A"],["B"]]
+					const parsed = JSON.parse(wrapped);
+					return [...new Set(parsed.flat())]; // 扁平化 + 去重
+				}
+
+				// ✅ 正常的单个 JSON 数组字符串
 				const parsed = JSON.parse(str);
 				if (Array.isArray(parsed)) {
-					return parsed;
+					return [...new Set(parsed)];
 				}
 			} catch (e) {
-
+				// 非 JSON 格式的情况继续往下处理
 			}
+
+			// ✅ 替换中文逗号
 			str = str.replace(/,/g, ',');
-			// 判断分隔符
+
+			// ✅ 支持多种分隔符
+			let arr = [];
 			if (str.includes('/')) {
-				return str.split('/').filter(Boolean);
+				arr = str.split('/');
 			} else if (str.includes(',')) {
-				return str.split(',').filter(Boolean);
+				arr = str.split(',');
+			} else {
+				arr = [str];
 			}
-			return [str];
+
+			return [...new Set(arr.map(s => s.trim()).filter(Boolean))];
 		},
 		// 选择跨境标签
 		selectTag(tag) {

+ 22 - 6
src/views/search/searchCom.vue

@@ -391,22 +391,38 @@
 		methods: {
 			parseSkills(str) {
 				if (!str) return [];
+
 				try {
+					// ✅ 如果是多个 JSON 数组拼接:比如 ["A"],["B"]
+					if (str.includes('],[')) {
+						const wrapped = `[${str}]`; // 变成 [["A"],["B"]]
+						const parsed = JSON.parse(wrapped);
+						return [...new Set(parsed.flat())]; // 扁平化 + 去重
+					}
+
+					// ✅ 正常的单个 JSON 数组字符串
 					const parsed = JSON.parse(str);
 					if (Array.isArray(parsed)) {
-						return parsed;
+						return [...new Set(parsed)];
 					}
 				} catch (e) {
-
+					// 非 JSON 格式的情况继续往下处理
 				}
+
+				// ✅ 替换中文逗号
 				str = str.replace(/,/g, ',');
-				// 判断分隔符
+
+				// ✅ 支持多种分隔符
+				let arr = [];
 				if (str.includes('/')) {
-					return str.split('/').filter(Boolean);
+					arr = str.split('/');
 				} else if (str.includes(',')) {
-					return str.split(',').filter(Boolean);
+					arr = str.split(',');
+				} else {
+					arr = [str];
 				}
-				return [str];
+
+				return [...new Set(arr.map(s => s.trim()).filter(Boolean))];
 			},
 			selectTabs(index) {
 				this.tabsCurr = index;