import { h } from 'vue'; import { BasicColumn } from '@/components/Table'; import { NTag, NSwitch, NImage } from 'naive-ui'; import { renderIcon } from '@/utils'; {% for field in fields %} {% if field.choices %} /** * {{ field.label }} 选项映射 */ const {{ field.name }}Map: Record = { {% for choice in field.choices %} {{ choice.value }}: { text: '{{ choice.label }}', type: '{% if loop.index0 == 0 %}success{% elif loop.index0 == 1 %}error{% elif loop.index0 == 2 %}warning{% else %}info{% endif %}' }, {% endfor %} }; {% endif %} {% endfor %} export const columns: BasicColumn[] = [ {% for field in list_fields %} { title: '{{ field.label }}', key: '{{ field.camel_name }}', width: {% if field.name == 'name' %}250{% elif field.name == 'sort' %}100{% elif field.type == 'DateTimeField' %}180{% else %}150{% endif %}, align: 'left', {% if field.is_image %} // 图片渲染 render(record) { return record.{{ field.camel_name }} ? h(NImage, { src: record.{{ field.camel_name }}, width: 40, height: 40, fit: 'cover', style: { borderRadius: '4px', }, previewDisabled: false, }) : h('span', '-'); }, {% elif field.choices %} // 选项标签渲染 render(record) { const status = {{ field.name }}Map[record.{{ field.camel_name }}]; return h( NTag, { bordered: false, type: status?.type || 'info', }, { default: () => status?.text || record.{{ field.camel_name }}, }, ); }, {% elif field.name == 'status' %} // 状态开关渲染 render(record) { return h(NSwitch, { value: record.status == 1, onUpdateValue: (val: boolean) => { // 状态变更事件由父组件处理 record.status = val ? 1 : 0; }, }); }, {% elif field.type == 'CharField' and field.camel_name|lower in ['website', 'site', 'url', 'link'] %} // 链接渲染 render(record) { const url = record.{{ field.camel_name }}; return h( 'a', { href: url, target: '_blank', rel: 'noopener noreferrer', }, { default: () => url || '点击查看', }, ); }, {% else %} // 普通文本渲染 {% endif %} }, {% endfor %} { title: '创建人', key: 'createUser', width: 100, }, { title: '创建时间', key: 'createTime', width: 180, }, ];