Skip to content

XDataItem 数据项

示例

基础用法

应用名称
占位内容加载失败
可通过lazy开启懒加载功能, 当图片滚动到可视范围内才会加载。 可通过 scroll-container 来设置滚动容器, 若未定义,则为最近一个 overflow 值为 auto 或 scroll 的父元素。
1

<template>
  <div class="page">
    <XDataItem title="应用名称" :icon="icon"></XDataItem>

    <XDataItem
      @imageClick="onClick"
      @title-click="onTitleClick"
      :icon="Setting"
      image-src="https://fuss10.elemecdn.com/a/3f/3302e58f9a181d2509f3dc0fa68b0jpeg.jpeg"
      image-height="100px"
      image-width="100%"
      title="占位内容加载失败"
      description="可通过lazy开启懒加载功能, 当图片滚动到可视范围内才会加载。 可通过 scroll-container 来设置滚动容器, 若未定义,则为最近一个 overflow 值为 auto 或 scroll 的父元素。"
      :action-bar-props="actionBarProps"
      @actionClick="onActionClick"
      @action-command="onActionCommand"
      split>
    </XDataItem>
  </div>
</template>
<script lang="ts" setup>
  import { Setting } from '@element-plus/icons-vue';
  import { XDataItem, type ActionBarItems } from '@vtj/ui';
  import { VtjIconPlus, VtjIconBug, VtjIconApi } from '@vtj/icons';

  const icon = {
    icon: Setting,
    color: '#fff',
    background: '#409eff',
    padding: 2,
    radius: 4,
    size: 30
  };

  const menus = [
    {
      command: 'a',
      label: '菜单 一'
    },
    {
      command: 'a1',
      label: '菜单 二'
    },
    {
      command: 'b',
      label: '菜单 三',
      divided: true,
      icon: VtjIconBug
    }
  ];

  const items: ActionBarItems = [
    {
      label: '按钮一',
      icon: VtjIconPlus,
      tooltip: '提示信息内容',
      draggable: true,
      onDragstart: (d: any, e: any) => {
        console.log(d, e);
      }
    },
    {
      label: '按钮二',
      icon: VtjIconBug,
      menus,
      onCommand(item: any) {
        console.log('onCommand', item);
      }
    },
    '|',
    {
      label: '按钮三',
      icon: VtjIconApi,
      badge: 1,
      onClick() {
        // alert('clicked!');
      }
    }
  ];

  const actionBarProps = {
    items: items,
    mode: 'button'
  };

  const onClick = () => {
    console.log('clicked!');
  };

  const onTitleClick = () => {
    console.log('onTitleClick');
  };

  const onActionClick = (e: any) => {
    console.log('onActionClick', e);
  };

  const onActionCommand = (action: any, menu: any) => {
    console.log('onActionCommand', action, menu);
  };
</script>

<style scoped>
  .page {
    display: flex;
    flex-direction: column;
    gap: 20px;
  }
</style>

排列展示

占位内容加载失败
可通过lazy开启懒加载功能, 当图片滚动到可视范围内才会加载。 可通过 scroll-container 来设置滚动容器, 若未定义,则为最近一个 overflow 值为 auto 或 scroll 的父元素。
按钮一
按钮二
占位内容加载失败
可通过lazy开启懒加载功能, 当图片滚动到可视范围内才会加载。 可通过 scroll-container 来设置滚动容器, 若未定义,则为最近一个 overflow 值为 auto 或 scroll 的父元素。
按钮一
按钮二
占位内容加载失败
可通过lazy开启懒加载功能, 当图片滚动到可视范围内才会加载。 可通过 scroll-container 来设置滚动容器, 若未定义,则为最近一个 overflow 值为 auto 或 scroll 的父元素。
按钮一
按钮二

<template>
  <XDataItem
    v-for="_n in 3"
    @imageClick="onClick"
    @title-click="onTitleClick"
    direction="row"
    :icon="Setting"
    image-src="https://fuss10.elemecdn.com/a/3f/3302e58f9a181d2509f3dc0fa68b0jpeg.jpeg"
    image-height="100px"
    image-width="100%"
    title="占位内容加载失败"
    description="可通过lazy开启懒加载功能, 当图片滚动到可视范围内才会加载。 可通过 scroll-container 来设置滚动容器, 若未定义,则为最近一个 overflow 值为 auto 或 scroll 的父元素。"
    :actions="actions"
    @actionClick="onActionClick"
    @action-command="onActionCommand"
    split>
  </XDataItem>
</template>
<script lang="ts" setup>
  import { Setting } from '@element-plus/icons-vue';
  import { XDataItem } from '@vtj/ui';
  import { VtjIconPlus } from '@vtj/icons';

  const actions = [
    {
      label: '按钮一',
      icon: VtjIconPlus
    },
    {
      label: '按钮二',
      icon: VtjIconPlus
    }
  ];

  const onClick = () => {
    console.log('clicked!');
  };

  const onTitleClick = () => {
    console.log('onTitleClick');
  };

  const onActionClick = (e: any) => {
    console.log('onActionClick', e);
  };

  const onActionCommand = (action: any, menu: any) => {
    console.log('onActionCommand', action, menu);
  };
</script>

插槽展示

图片插槽
自定义标题插槽
自定义描述插槽
默认插槽
actions插槽

<template>
  <div>
    <XDataItem title="应用名称" :icon="icon">
      <template #image>
        <img
          src="https://fuss10.elemecdn.com/a/3f/3302e58f9a181d2509f3dc0fa68b0jpeg.jpeg"
          style="width: 100%; height: 100px"
          alt="图片插槽" />
      </template>

      <template #title>自定义标题插槽</template>
      <template #description>自定义描述插槽</template>
      <template #actions>actions插槽</template>

      <template #default>默认插槽</template>
    </XDataItem>
  </div>
</template>
<script lang="ts" setup>
  import { Setting } from '@element-plus/icons-vue';
  import { XDataItem } from '@vtj/ui';

  const icon = {
    icon: Setting,
    color: '#fff',
    background: '#409eff',
    padding: 2,
    radius: 4,
    size: 30
  };
</script>

API

属性

属性名说明类型默认值
direction排列方式string<'row' | 'column'>column
imageSrc图片路径string-
imageWidth图片宽度number | string-
imageHeight图片高度number | string-
icon图标string | object-
title数据项标题string-
description数据项描述string-
actions底部按钮array-
actionBarPropsXActionBar 的属性对象object-
splitcss控制间隔booleanpt-[10px],mt-[10px],bt-[1px solid #e4e7ed]
onImageClick点击图片function-
onTitleClick点击标题function-

事件

名称说明参数
imageClick点击图片-
titleClick点击标题-
actionClick点击图标(action)
actionCommand点击图标(action,menu)

插槽

插槽名说明类型
default默认插槽-
image--
title--
description-
actions--

Released under the MIT License.