在封装的过滤器文件里(src/filter/index.js):
//动态树过滤器
export function dynamicTreeText(value, options) {
if (!value) return ''
function transfer(data) {
let textList = []
function loop(data, id) {
for (let i = 0; i < data.length; i++) {
if (data[i].id === id) {
textList.push(data[i].fullName)
break
}
if (data[i].children) loop(data[i].children, id)
}
}
for (let i = 0; i < data.length; i++) {
loop(options, data[i])
}
return textList.join()
}
if (!options || !Array.isArray(options)) {
return value.join()
}
if (Array.isArray(value)) {
let text = transfer(value)
return text
} else {
if (!options || !Array.isArray(options)) return value
let list = value.split()
let text = transfer(list)
return text
}
}
//数组过滤
export function dynamicText(value, options) {
if (!value) return ''
if (Array.isArray(value)) {
if (!options || !Array.isArray(options)) return value.join()
let textList = []
for (let i = 0; i < value.length; i++) {
let item = options.filter((o) => o.id == value[i])[0]
if (!item || !item.fullName) {
textList.push(value[i])
} else {
textList.push(item.fullName)
}
}
return textList.join()
}
let myvalue = JSON.parse(value)
if (Array.isArray(myvalue)) {
if (!options || !Array.isArray(options)) return myvalue.join()
let textList = []
for (let i = 0; i < myvalue.length; i++) {
let item = options.filter((o) => o.id == myvalue[i])[0]
if (!item || !item.fullName) {
textList.push(myvalue[i])
} else {
textList.push(item.fullName)
}
}
return textList.join()
}
if (!options || !Array.isArray(options)) return value
let item = options.filter((o) => o.id == value)[0]
if (!item || !item.fullName) return value
return item.fullName
}
在文件js部分用需要引用(import { dynamicTreeText } from "@/filters";) 在模板部分引用则不需引用,直接可写