|
@@ -3,16 +3,20 @@
|
|
|
<el-table-column v-if="col.children" :label="col.label" align="center">
|
|
<el-table-column v-if="col.children" :label="col.label" align="center">
|
|
|
<template v-for="(child, childIndex) in col.children" :key="childIndex">
|
|
<template v-for="(child, childIndex) in col.children" :key="childIndex">
|
|
|
<el-table-column v-if="child.isTag" v-bind="child" align="center" resizable>
|
|
<el-table-column v-if="child.isTag" v-bind="child" align="center" resizable>
|
|
|
- <template #default="scope">
|
|
|
|
|
- <dict-tag :type="child.dictType!" :value="scope.row[child.prop!]" />
|
|
|
|
|
|
|
+ <template #default="{ row }">
|
|
|
|
|
+ <dict-tag v-if="child.dictType" :type="child.dictType!" :value="row[child.prop!]" />
|
|
|
|
|
+ <el-tag :type="tagType(row[child.prop!])" v-else>{{
|
|
|
|
|
+ child.formatter?.(row) || ''
|
|
|
|
|
+ }}</el-tag>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
<el-table-column v-else v-bind="child" align="center" resizable />
|
|
<el-table-column v-else v-bind="child" align="center" resizable />
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
<el-table-column v-else-if="col.isTag" v-bind="col" align="center" resizable>
|
|
<el-table-column v-else-if="col.isTag" v-bind="col" align="center" resizable>
|
|
|
- <template #default="scope">
|
|
|
|
|
- <dict-tag :type="col.dictType!" :value="scope.row[col.prop!]" />
|
|
|
|
|
|
|
+ <template #default="{ row }">
|
|
|
|
|
+ <dict-tag v-if="col.dictType" :type="col.dictType!" :value="row[col.prop!]" />
|
|
|
|
|
+ <el-tag :type="tagType(row[col.prop!])" v-else>{{ col.formatter?.(row) || '' }}</el-tag>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
<el-table-column v-else v-bind="col" align="center" resizable />
|
|
<el-table-column v-else v-bind="col" align="center" resizable />
|
|
@@ -30,6 +34,7 @@ interface ColumnProps {
|
|
|
children?: ColumnProps[]
|
|
children?: ColumnProps[]
|
|
|
isTag?: boolean
|
|
isTag?: boolean
|
|
|
dictType?: string
|
|
dictType?: string
|
|
|
|
|
+ formatter?: (row: any) => any
|
|
|
[key: string]: any
|
|
[key: string]: any
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -38,4 +43,17 @@ const props = defineProps<{
|
|
|
}>()
|
|
}>()
|
|
|
|
|
|
|
|
const { columns } = toRefs(props)
|
|
const { columns } = toRefs(props)
|
|
|
|
|
+
|
|
|
|
|
+const tagType = (status: number) => {
|
|
|
|
|
+ switch (status) {
|
|
|
|
|
+ case 0:
|
|
|
|
|
+ return 'info'
|
|
|
|
|
+ case 10:
|
|
|
|
|
+ return 'primary'
|
|
|
|
|
+ case 20:
|
|
|
|
|
+ return 'success'
|
|
|
|
|
+ case 30:
|
|
|
|
|
+ return 'danger'
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
</script>
|
|
</script>
|