| | |
| | | <div> |
| | | <template v-for="(item, index) in options"> |
| | | <template v-if="values.includes(item.value)"> |
| | | <span v-if="item.elTagType == 'default' || item.elTagType == ''" :key="item.value" :index="index" :class="item.elTagClass"> |
| | | <span v-if="item.elTagType == 'default' || item.elTagType == ''" :key="item.value" :index="index" |
| | | :class="item.elTagClass"> |
| | | {{ item.label + " " }} |
| | | </span> |
| | | <el-tag |
| | |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { propTypes } from '@/utils/propTypes'; |
| | | import {propTypes} from '@/utils/propTypes'; |
| | | |
| | | |
| | | const props = defineProps({ |
| | |
| | | value: [Number, String, Array] as PropType<number | string | Array<number | string>>, |
| | | // 当未找到匹配的数据时,显示value |
| | | showValue: propTypes.bool.def(true), |
| | | }); |
| | | |
| | | const values = computed(() => { |
| | | if (props.value !== null && typeof props.value !== "undefined") { |
| | | return Array.isArray(props.value) ? props.value : [String(props.value)]; |
| | | } else { |
| | | return []; |
| | | separator: { |
| | | type: String, |
| | | default: ',' |
| | | } |
| | | }); |
| | | const values = computed(() => { |
| | | if (props.value === '' || props.value === null || typeof props.value === "undefined") return [] |
| | | let valu= Array.isArray(props.value) ? props.value.map(item => '' + item) : String(props.value).split(props.separator); |
| | | console.log("valu",valu) |
| | | return valu |
| | | }); |
| | | |
| | | const unmatch = computed(() => { |
| | | if (props.value !== null && typeof props.value !== "undefined") { |
| | | // 传入值为非数组 |
| | | if (!Array.isArray(props.value)) { |
| | | if (props.options.some((v) => v.value == props.value)) { |
| | | return false; |
| | | } |
| | | return true; |
| | | if (props.options?.length == 0 || props.value === '' || props.value === null || typeof props.value === "undefined") return false |
| | | // 传入值为非数组 |
| | | values.value.forEach(item => { |
| | | if (!props.options.some(v => v.value === item)) { |
| | | return true // 如果有未匹配项,将标志设置为true |
| | | } |
| | | return true; |
| | | } |
| | | // 没有value不显示 |
| | | return false; |
| | | }) |
| | | return false // 返回标志的值 |
| | | }); |
| | | |
| | | const unmatchArray = computed(() => { |
| | | // 记录未匹配的项 |
| | | const itemUnmatchArray: Array<string | number> = []; |
| | | if (props.value !== null && typeof props.value !== "undefined") { |
| | | // 传入值为非数组 |
| | | if (!Array.isArray(props.value)) { |
| | | itemUnmatchArray.push(props.value); |
| | | } else { |
| | | // 传入值为Array |
| | | props.value.forEach((item) => { |
| | | if (!props.options.some((v) => v.value == item)) { |
| | | itemUnmatchArray.push(item); |
| | | } |
| | | }); |
| | | } |
| | | if (props.value !== '' && props.value !== null && typeof props.value !== "undefined") { |
| | | values.value.forEach(item => { |
| | | if (!props.options.some(v => v.value === item)) { |
| | | itemUnmatchArray.push(item); |
| | | } |
| | | }) |
| | | } |
| | | // 没有value不显示 |
| | | return handleArray(itemUnmatchArray); |