Просмотр исходного кода

update 优化 字典组件值宽松匹配

疯狂的狮子Li 3 месяцев назад
Родитель
Сommit
b4282f1423
1 измененных файлов с 7 добавлено и 2 удалено
  1. 7 2
      src/components/DictTag/index.vue

+ 7 - 2
src/components/DictTag/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <template v-for="(item, index) in options">
-      <template v-if="values.includes(item.value)">
+      <template v-if="isValueMatch(item.value)">
         <span
           v-if="(item.elTagType === 'default' || item.elTagType === '') && (item.elTagClass === '' || item.elTagClass == null)"
           :key="item.value"
@@ -50,6 +50,7 @@ const props = withDefaults(defineProps<Props>(), {
 
 const values = computed(() => {
   if (props.value === '' || props.value === null || typeof props.value === 'undefined') return [];
+  if (typeof props.value === 'number' || typeof props.value === 'boolean') return [props.value]
   return Array.isArray(props.value) ? props.value.map((item) => '' + item) : String(props.value).split(props.separator);
 });
 
@@ -58,7 +59,7 @@ const unmatch = computed(() => {
   // 传入值为非数组
   let unmatch = false; // 添加一个标志来判断是否有未匹配项
   values.value.forEach((item) => {
-    if (!props.options.some((v) => v.value === item)) {
+    if (!props.options.some((v) => v.value == item)) {
       unmatch = true; // 如果有未匹配项,将标志设置为true
     }
   });
@@ -85,6 +86,10 @@ const handleArray = (array: Array<string | number>) => {
     return pre + ' ' + cur;
   });
 };
+
+const isValueMatch = (itemValue: any) => {
+  return this.values.some(val => val == itemValue)
+}
 </script>
 
 <style lang="scss" scoped>