|
|
@@ -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) {
|