当前位置: 首页 > news >正文

东莞网站设计智能 乐云践新网站开发 所有权

东莞网站设计智能 乐云践新,网站开发 所有权,广告网眼布,北京做网站需要多少钱功能实现背景 通过Vue3实现后台管理项目一定含有表格功能,基于简单的字段渲染有时候想通过JSON配置来提高开发效率 注意: 1.项目依赖element-plus 使用规则 ColumnRenderProp中key用于:v-for需要的唯一标识ColumnRenderProp中props用于&#…

功能实现背景

通过Vue3实现后台管理项目一定含有表格功能,基于简单的字段渲染有时候想通过JSON配置来提高开发效率

注意:
1.项目依赖element-plus

使用规则

  1. ColumnRenderPropkey用于:v-for需要的唯一标识
  2. ColumnRenderPropprops用于:继承 el-table-column 所有属性 & 自定义属性
  3. ColumnRenderProptype用于:常在项目中出现且需要转换的字段如时间、钱等等,可自行追加
  4. ColumnRenderPropComponent用于:自定义组件
  5. ColumnRenderProprender用于:自定义渲染函数
  6. columns中优先级排序 component < render < type < props

项目代码

  1. 创建type/index.ts文件
export interface ColumnRenderProp {key?: string // 遍历使用keyprops?: Record<string, any> // 继承 el-table-column 所有属性 & 自定义属性type?: 'date'	// 常用格式的 el-table-columncomponent?: Component // 自定义组件render?: Function // 渲染函数
}
  1. 创建ColumnRender.vue文件
<template><!-- key渲染优先级: column.key > column.props.prop > index--><template v-for="(column, index) in columns" :key="column.key || column.props?.prop || index"><!-- 优先:component --><component v-if="column.component" :is="column.component" v-bind="column.props" /><!-- 其次:render --><el-table-column v-else-if="column.render" v-bind="column.props"><template v-slot="props"><component :is="column.render(props)" /></template></el-table-column><!-- 日期 --><el-table-column v-else-if="column.type === 'date'" v-bind="column.props"><template v-slot="{ row }: { row: any }"><div>{{ parseTime(row[column.props?.prop]) || EMPTYDESC }}</div></template></el-table-column><el-table-column v-else v-bind="column.props" /></template>
</template><script setup lang="ts">
import type { ColumnRenderProp } from '@/types/index.ts'defineOptions({name: 'IPSColumnRender'
})defineProps<{columns: ColumnRenderProp[]
}>()// 时间格式化 => 需自己实现
function parseTime(val: number) {return val
}
</script>
  1. 创建ColumnState.vue文件 => 自定义组件
<template><el-table-column v-bind="$attrs"><template v-slot="{ row }"><div class="el-primary">{{ row.state }}</div></template></el-table-column>
</template>
  1. 创建ColumnHandle.vue文件 => 自定义组件
<template><el-button type="primary" @click="handleDetail">{{ deleteVal }}</el-button>
</template>
<script setup lang="ts">
const props = defineProps<{deleteVal: string,row: any
}>()
const emit = defineEmits<{(e: 'detail', value: any): void
}>()function handleDetail() {console.log('handleDetail', props.row)emit('detail', 123)
}
</script>
  1. 实现代码
<template><el-table :data="tableData" style="width: 100%"><ColumnRender :columns="columns" /></el-table>
</template><script setup lang="ts">
import ColumnRender from './ColumnRender.vue'
import ColumnState from './ColumnState.vue'
import ColumnHandle from './ColumnHandle.vue'import { computed, h } from 'vue'const tableData = [{name: '张三',state: '已完成',date: '2019-05-03',address: 'No. 189, Grove St, Los Angeles',},{name: '王五',state: '已下单',date: '2019-05-03',address: 'No. 189, Grove St, Los Angeles',}
]// 如果里面数据不会发生改变,可以移除 computed
const columns = computed(() => [{// 普通渲染模式props: {label: '姓名',prop: 'name',width: '180'}},{// 组件渲染模式key: 'state',props: {label: '状态',width: '180'// 此处可以接收组件自定义事件,也可以给组件传递props},component: ColumnState},{// 自定义渲染模式 => 可接收内部事件key: 'handle',props: {label: '操作',width: '180'},render({ row }: { row: any }) {return h(ColumnHandle, {row: row,deleteVal: '详情1',onDetail(val: any) {console.log(val, row.name, '22==')}})}}
])
</script>
http://www.dtcms.com/a/550406.html

相关文章:

  • 在service方法中已经catch异常,Transactional失效怎么办
  • 服务平台网站设计门户网官网
  • 在线自助下单网站班级空间网站建设作用
  • Polarctf 写shell
  • 中建建筑网站机械设计师网课
  • 学习笔记一:基本术语
  • ssh网站开发的书籍织梦茶叶网站模板
  • 求网站建设详细过程网络规划设计师是高级职称吗
  • 【Linux权限 (二)】Linux权限机制深度解析:umask如何决定默认权限与粘滞位的妙用
  • 基于 Flask + APScheduler + MySQL 的自动报表系统设计
  • 建筑设计自学网站怎么开发一个自己的网站
  • go做网站网站建设优化东莞
  • AI智能座舱是什么?
  • 传奇手游网站大全9377网站建设哪便宜
  • 2023/12 JLPT听力原文 问题四
  • 域名备案时网站名称全国信息企业公示系统
  • Tokio的多线程调度器架构:深度解析与实践
  • Ubuntu(①shell脚本)
  • 个人婚礼网站模板网站建设 丽水
  • 服装定制网站模板茂名建站模板搭建
  • VB.NET 与 C# 文件操作文本到二进制文件的读写
  • ROS2系列 (12) : 自定义msg通信接口
  • 建设科技网络网站的意义和目的国产长尾关键词拘挖掘
  • 个人网站备注wordpress 模板 旅游
  • 嘉定南翔网站建设南阳平面设计培训学校
  • HTML做网站的书籍临沂做网站哪家好
  • 购物网站开发含代码织梦网站安装教程视频
  • k8s 实战入门
  • 网站建设与管理报告书先域名 还是先做网站
  • SQL -- GROUP BY 基本语法