liaction-info-card 是一个数据驱动通用的信息卡片组件,用于展示结构化的信息列表,支持多种交互方式和灵活的配置。

更新记录

1.0.0(2025-12-05) 下载此版本

初始功能


平台兼容性

uni-app(4.66)
Vue2Vue3ChromeSafariapp-vueapp-nvueAndroidiOS鸿蒙
微信小程序支付宝小程序抖音小程序百度小程序快手小程序京东小程序鸿蒙元服务QQ小程序飞书小程序快应用-华为快应用-联盟

liaction-info-card

组件介绍

liaction-info-card 是一个数据驱动通用的信息卡片组件,用于展示结构化的信息列表,支持多种交互方式和灵活的配置。

功能特性

  • ✨ 灵活的布局结构:支持头部、自定义内容、详情列表和底部插槽
  • 🎨 多样化的数据展示:支持普通文本、状态徽章、链接和可编辑项
  • 🔗 强大的交互能力:支持卡片点击、头部点击、列表项点击和链接点击
  • ✏️ 可编辑功能:支持直接在卡片内编辑内容
  • 🎯 灵活的配置选项:支持自定义样式、可见性控制和内容格式化
  • 📱 响应式设计:适配不同屏幕尺寸

属性说明

属性名类型默认值说明
classNameString''自定义类名
titleString''卡片标题
iconSrcString''卡片图标
detailItemsArray[]详情列表数据
dataObject{}数据源对象
hasCustomContentBooleanfalse是否显示自定义内容插槽
enableDefaultBorderBooleanfalse是否启用默认边框
showHeaderBooleantrue是否显示头部区域
headerClassString''自定义头部类名
listClassString''自定义列表类名
hasRightContentBooleanfalse是否显示右侧内容区域
visibleBooleantrue控制整个组件的显示隐藏
containerStyleObject{}自定义容器样式
headerPaddingString'10px 16px'自定义头部内边距

事件说明

事件名参数说明
link-click{ item, data }链接点击事件
item-click{ item, data, event }列表项点击事件
edit-start{ item, data }开始编辑事件
edit-complete{ item, value, data }编辑完成事件
input{ item, value, data }输入事件
edit-cancel{ item, data }取消编辑事件
header-click{ data, event }头部点击事件
click{ data, event }卡片点击事件

detailItems 配置项

属性名类型说明可选值
labelString标签文本-
keyString数据字段名,支持嵌套属性(如 'user.name')-
typeString数据类型'edit'
isStatusBadgeBoolean是否为状态徽章true/false
isLinkBoolean是否为链接类型true/false
showLinkIconBoolean是否显示链接图标true/false
clickableBoolean是否可点击true/false
visibleBoolean是否可见true/false
formatterFunction数据格式化函数(value, data) => formattedValue
classNameString自定义类名-
labelClassString自定义标签类名-
badgeClassString自定义徽章类名-
inputTypeString编辑框类型'text', 'number', 'email' 等
placeholderString编辑框占位符-
maxlengthNumber编辑框最大长度-
allowEmptyBoolean是否允许为空true/false
validatorFunction自定义验证函数(value, item, data) => boolean
onInputFunction输入回调函数(item, value, data) => void
onClickFunction点击回调函数(item, data) => void
onEditStartFunction开始编辑回调(item, data) => void
onEditCompleteFunction编辑完成回调(item, value, data) => void
onEditCancelFunction取消编辑回调(item, data) => void
selectableString可选择类型'label', 'content', 'both'

使用示例

1. 基本使用

<template>
  <liaction-info-card 
    :title="'基本信息卡片'"
    :detail-items="detailItems"
    :data="data"
  >
  </liaction-info-card>
</template>

<script>
export default {
  data() {
    return {
      data: {
        name: '张三',
        age: 25,
        gender: '男'
      },
      detailItems: [
        { label: '姓名', key: 'name' },
        { label: '年龄', key: 'age' },
        { label: '性别', key: 'gender' }
      ]
    }
  }
}
</script>

2. 带有链接的示例

<template>
  <liaction-info-card 
    :title="'链接类型示例'"
    :detail-items="detailItems"
    :data="data"
    @link-click="handleLinkClick"
  >
  </liaction-info-card>
</template>

<script>
export default {
  data() {
    return {
      data: {
        website: 'https://example.com',
        document: '文档中心'
      },
      detailItems: [
        { label: '官方网站', key: 'website', isLink: true, showLinkIcon: true },
        { label: '文档中心', key: 'document', isLink: true, showLinkIcon: true }
      ]
    }
  },
  methods: {
    handleLinkClick({ item, data }) {
      console.log('链接点击', item, data);
    }
  }
}
</script>

3. 可编辑项示例

<template>
  <liaction-info-card 
    :title="'可编辑项示例'"
    :detail-items="detailItems"
    :data="data"
    @edit-complete="handleEditComplete"
  >
  </liaction-info-card>
</template>

<script>
export default {
  data() {
    return {
      data: {
        username: 'user123',
        email: 'user@example.com'
      },
      detailItems: [
        { 
          label: '用户名', 
          key: 'username', 
          type: 'edit', 
          inputType: 'text',
          allowEmpty: false 
        },
        { 
          label: '邮箱', 
          key: 'email', 
          type: 'edit', 
          inputType: 'email',
          placeholder: '请输入邮箱' 
        }
      ]
    }
  },
  methods: {
    handleEditComplete({ item, value, data }) {
      console.log('编辑完成', item.label, value);
    }
  }
}
</script>

4. 自定义标题背景

<template>
  <liaction-info-card 
    :title="'自定义标题背景'"
    :detail-items="detailItems"
    :data="data"
    :header-class="'custom-header-bg'"
  >
  </liaction-info-card>
</template>

<script>
export default {
  data() {
    return {
      data: {
        field1: '值1',
        field2: '值2'
      },
      detailItems: [
        { label: '字段1', key: 'field1' },
        { label: '字段2', key: 'field2' }
      ]
    }
  }
}
</script>

<style scoped>
/* 自定义标题背景样式 */
:deep(.custom-header-bg) {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  color: white;
  border-bottom-color: transparent;
}

:deep(.custom-header-bg .info-card__title) {
  color: white;
}
</style>

5. 完整交互示例

<template>
  <liaction-info-card 
    :title="'完整交互示例'"
    :icon-src="'/static/logo.png'"
    :detail-items="detailItems"
    :data="data"
    :has-right-content="true"
    @click="handleCardClick"
    @header-click="handleHeaderClick"
  >
    <template #header-right>
      <text class="header-right-text">更多</text>
    </template>
  </liaction-info-card>
</template>

<script>
export default {
  data() {
    return {
      data: {
        name: '交互示例',
        value: '12345',
        status: '正常',
        detail: '详情信息'
      },
      detailItems: [
        { label: '名称', key: 'name' },
        { label: '数值', key: 'value', type: 'edit', inputType: 'number' },
        { label: '状态', key: 'status', isStatusBadge: true, badgeClass: 'status-success' },
        { label: '详情', key: 'detail', isLink: true, showLinkIcon: true }
      ]
    }
  },
  methods: {
    handleCardClick() {
      console.log('卡片点击');
    },
    handleHeaderClick() {
      console.log('头部点击');
    }
  }
}
</script>

插槽说明

header

  • 作用:自定义头部内容
  • 参数:无

header-right

  • 作用:自定义头部右侧内容
  • 参数:无

footer

  • 作用:自定义底部内容
  • 参数:无

自定义项插槽

<liaction-info-card :detail-items="detailItems" :data="data">
  <template #item-slot-name="{ item, data }">
    <!-- 自定义内容 -->
    <text>{{ item.label }}: {{ data[item.key] }}</text>
  </template>
</liaction-info-card>

注意事项

  • 嵌套属性:支持通过点语法访问嵌套属性(如 user.name
  • 数据格式化:可以通过 formatter 函数自定义数据显示格式
  • 编辑验证:支持通过 validator 函数自定义验证逻辑
  • 事件冒泡:编辑状态下会阻止事件冒泡,避免触发不必要的点击事件
  • 样式穿透:自定义样式时需要使用 ::v-deep 或 :deep() 语法

浏览器兼容性

  • 支持 H5、微信小程序、支付宝小程序等 uni-app 支持的平台
  • 支持现代浏览器

相关组件

作者

liaction-ui 团队

许可证

MIT License

演示图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值