首页 > 其他分享 >06-TDesign组件库

06-TDesign组件库

时间:2024-03-13 09:57:21浏览次数:35  
标签:TDesign 06 name title 组件 colKey 路由

TDesign 具有统一的价值观,一致的设计语言和视觉风格,帮助用户形成连续、统一的体验认知。在此基础上,TDesign 提供了开箱即用的 UI 组件库、设计指南 和相关 设计资产,以优雅高效的方式将设计和研发从重复劳动中解放出来,同时方便大家在 TDesign 的基础上扩展,更好的的贴近业务需求。

  • RDesign是传智研究院对腾讯的TDesign组件进行了简易的封装,可以更快的创建脚手架项目,达到快速开发的目的
  1. 安装脚手架
npm i -g rdesign-starter-cli
  1. 创建rdesign项目
rdesign create XXX
  1. 选择template4
  2. cd进入项目,yarn install
  3. npm run dev

RDesign的封装:

image.png

TDesign常用组件

在项目中使用第三方组件,都需要参考组件中提供的文档,每个组件主要包含三部分内容:

  • 代码示例:每个组件的核心功能
  • API文档:描述每一个API的功能和注意事项
  • 设计指南:交互使用建议

image.png

入门案例

需求说明:

  • 在创建好的项目中新增路由菜单
  1. 主菜单:权限管理
  2. 子菜单:用户管理和角色管理
  • 在用户管理菜单中新增组件,展示用户列表。

实现新增路由菜单

image.png

观察router结构:

image.png

自定义路由实际上是放在了modules文件夹下,自定义路由:

mport Layout from '@/layouts/index.vue'  
import GrzxIcon from '@/assets/test-img/icon_menu_grzx.svg'  
import HomeIcon from '@/assets/test-img/icon_menu_diaodu.svg'  
import ModelIcon from '@/assets/test-img/icon_menu_zj.svg'  
  
export default [  
  {  
    path: '/permission',  
    name: 'permission',  
    component: Layout,  
    redirect: '/permission/index',  
    meta: {  
      title: '权限管理',  
      icon: HomeIcon  
    },  
    children: [  
      {  
        path: 'index',  
        name: 'index',  
        component: () => import('@/pages/permission/user/index.vue'),  
        meta: {  
          title: '用户管理',  
          icon: ModelIcon  
        }  
      },  
      {  
        path: 'role',  
        name: 'role',  
        component: () => import('@/pages/permission/role/index.vue'),  
        meta: {  
          title: '角色管理',  
          icon: GrzxIcon  
        }  
      }  
    ]  
  }  
]

主菜单项就是父路由,子菜单项就是子路由,注意子路由的path不加 /

实现用户管理菜单中展示用户列表

image.png

TDesign提供的表格:

<h1>用户管理</h1>  
  
<t-space direction="vertical">  
  <!-- 当数据为空需要占位时,会显示 cellEmptyContent -->  <t-table  
    row-key="index"  
    :data="data"  
    :columns="columns"  
    :pagination="pagination"  
    cell-empty-content="-"  
    resizable  
    lazy-load  >  
  </t-table>  
</t-space>

表头由columns指定,表格中数据由data指定。

const data = [  
  {  
    "id": 1,  
    "name": "谢逊",  
    "image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/1.jpg",  
    "gender": 1,  
    "job": "班主任",  
    "entrydate": "2023-06-09",  
    "updatetime": "2023-07-01 00:00:00"  
  },  
  {  
    "id": 2,  
    "name": "韦一笑",  
    "image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/2.jpg",  
    "gender": 1,  
    "job": "班主任",  
    "entrydate": "2023-06-09",  
    "updatetime": "2023-07-01 00:00:00"  
  }];  
  
const columns = ref([  
  { colKey: 'rowIndex', title: '序号', width: '100' },  
  { colKey: 'name', title: '名称' },  
  { colKey: 'image', title: '图片', ellipsis: true },  
  { colKey: 'gender', title: '性别' },  
  { colKey: 'job', title: '职位' },  
  { colKey: 'entrydate', title: '入职日期' },  
  { colKey: 'updatetime', title: '更新时间' },  
]);

image.png

重点是如何在表格中展示序号如何实现图片预览性别处理

使用ImageViewer实现图片预览:


<div>
    <div class="tdesign-demo-image-viewer__base">
      <t-image-viewer :images="[img]">
        <template #trigger="{ open }">
          <div class="tdesign-demo-image-viewer__ui-image">
            <img alt="test" :src="img" class="tdesign-demo-image-viewer__ui-image--img" />
            <div class="tdesign-demo-image-viewer__ui-image--hover" @click="open">
              <span><BrowseIcon size="1.4em" /> 预览</span>
            </div>
          </div>
        </template>
      </t-image-viewer>
    </div>
  </div>

images和img是动态的值,需要将这部分内容放在table标签内部

<t-table  
  row-key="index"  
  :data="data"  
  :columns="columns"  
  :pagination="pagination"  
  cell-empty-content="-"  
  resizable  
  lazy-load>  
  
  <!--处理图片-->  
  <template #image="{row}"><!--row代表一行内容-->  
    <div>  
      <div class="tdesign-demo-image-viewer__base">  
  
        <t-image-viewer :images="[row.image]"><!--动态数据-->  
          <template #trigger="{ open }">  
            <div class="tdesign-demo-image-viewer__ui-image">  
              <img alt="test" :src="row.image" class="tdesign-demo-image-viewer__ui-image--img" /> <!--动态数据-->  
              <div class="tdesign-demo-image-viewer__ui-image--hover" @click="open">  
                <span><BrowseIcon size="1.4em" /> 预览</span>  
              </div>  
            </div>  
          </template>  
        </t-image-viewer>  
      </div>  
    </div>  
  </template>  
</t-table>

#image 就是表格中需要自定义内容的列,row就是这一行数据

实现序号:

<template>  
  <h1>用户管理</h1>  
  
  <t-space direction="vertical">  
    <!-- 当数据为空需要占位时,会显示 cellEmptyContent -->    <t-table  
      row-key="index"  
      :data="data"  
      :columns="columns"  
      :pagination="pagination"  
      cell-empty-content="-"  
      resizable  
      lazy-load    >  
  
      <!--处理序号-->  
      <template #rowIndex="{rowIndex}">{{rowIndex + 1}}</template>  
      <!--处理图片-->  
      <template #image="{row}"><!--row代表一行内容-->  
        <div>  
          <div class="tdesign-demo-image-viewer__base">  
  
            <t-image-viewer :images="[row.image]"><!--动态数据-->  
              <template #trigger="{ open }">  
                <div class="tdesign-demo-image-viewer__ui-image">  
                  <img alt="test" :src="row.image" class="tdesign-demo-image-viewer__ui-image--img" /> <!--动态数据-->  
                  <div class="tdesign-demo-image-viewer__ui-image--hover" @click="open">  
                    <span><BrowseIcon size="1.4em" /> 预览</span>  
                  </div>  
                </div>  
              </template>  
            </t-image-viewer>  
          </div>  
        </div>  
      </template>  
    </t-table>  
  </t-space>  
</template>

性别处理:

<template>  
  <h1>用户管理</h1>  
  
  <t-space direction="vertical">  
    <!-- 当数据为空需要占位时,会显示 cellEmptyContent -->    <t-table  
      row-key="index"  
      :data="data"  
      :columns="columns"  
      :pagination="pagination"  
      cell-empty-content="-"  
      resizable  
      lazy-load    >  
  
      <!--处理序号-->  
      <template #rowIndex="{rowIndex}">{{rowIndex + 1}}</template>  
      <!--处理图片-->  
      <template #image="{row}"><!--row代表一行内容-->  
        <div>  
          <div class="tdesign-demo-image-viewer__base">  
  
            <t-image-viewer :images="[row.image]"><!--动态数据-->  
              <template #trigger="{ open }">  
                <div class="tdesign-demo-image-viewer__ui-image">  
                  <img alt="test" :src="row.image" class="tdesign-demo-image-viewer__ui-image--img" /> <!--动态数据-->  
                  <div class="tdesign-demo-image-viewer__ui-image--hover" @click="open">  
                    <span><BrowseIcon size="1.4em" /> 预览</span>  
                  </div>  
                </div>  
              </template>  
            </t-image-viewer>  
          </div>  
        </div>  
      </template>  
      <!--处理性别-->  
      <template #gender="{row}">  
        {{row.gender === 1 ? '男' : '女'}}  
      </template>  
    </t-table>  
  </t-space>  
</template>

总结

重点:自定义列模板

<template #colName={row}>

</template>

标签:TDesign,06,name,title,组件,colKey,路由
From: https://www.cnblogs.com/euneirophran/p/18069936

相关文章

  • angualr - 模块与组件
    模块@NgModule的设计意图静态的元数据(declarations)运行时的元数据(providers)组合与分组(imports和exports)《angular从零到一》说的简单些:NgModule是一个装饰器函数,它接收一个用来描述模块属性的元数据对象。其中最重要的属性是:❑declarations:声明本模块中拥有......
  • 微信小程序(五)常用组件
    text与rich-text 按钮的样式image组件的使用 ......
  • TR069-STUN
    原理1、NAT穿越技术,为了解决NAT设备对P2P网络的通信限制 2、作用:检测网络中是否存在NAT设备,并获取两个通信端点经NAT设备分配的IP地址和端口号,然后建立一条可穿越NAT的P2P链接,实现P2P通信 3、cwmp:依据TR111实现STUNServer功能,CPE作为STUNClient,向STUNServer发送BINDING......
  • LY1060 [ 20230203 CQYC模拟赛IV T1 ] 放进去
    题意一共有\(n\)个物品,每个物品有\(m\)种种类。每个物品的每个种类的代价为\(a_{i,j}\)选择一种种类需要先支付\(b_i\)的代价。\(n\le1e5,m\le25\)求最小的代价使得能够选择\(n\)种物品。Sol考场上竟然没做出来。。。冲到最后20min交了发模拟退火。。。集......
  • ​ iOS全局自动化代码混淆工具!支持cocoapod组件代码一并混淆
     摘要IpaGuard是一款强大的iOSipa混淆工具,能够对ipa文件进行混淆加密,保护代码、代码库和资源文件,降低代码可读性,增加破解反编译难度。本文将介绍IpaGuard的功能及界面结构,以及如何使用该工具进行代码混淆和保护。引言在iOS应用开发中,代码安全和保护至关重要。为了防止代码......
  • Vue2.x笔记:组件通信
    一、插槽slot插槽(slot)是一种Vue中组件通信的方式,主要用于父组件向子组件传递自定义内容。有三种插槽:默认插槽:最基本的插槽,没有任何标识,每个子组件只能定义一个具名插槽:具有name属性的默认插槽,每个子组件可以定义多个作用域插槽:子组件提供数据,由父组件决定其渲染方式1.默......
  • ModelSerializer组件 模型类序列化器 LL
    如果我们想要使用序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer类。ModelSerializer与常规的Serializer相同,但提供了:基于模型类自动生成一系列字段基于模型类自动为Serializer生成validators,比如unique_toget......
  • Vue 3 组件通信与 ViewDesign 最佳实践
    Vue3组件通信与ViewDesign最佳实践随着Vue3的发布,组件通信成为了前端开发中一个值得关注的话题。通过有效的组件通信方式,可以大幅提高代码的可维护性和可重用性。本文将探讨Vue3中组件通信的几种方式,并使用ViewDesign组件库中的实例加以说明。ViewDesign是一款......
  • 代随想录 第十八天 | ● 513.找树左下角的值 ● 112. 路径总和 113.路径总和ii ● 10
    leetcode:513.找树左下角的值-力扣(LeetCode)思路:是找最深左下角的值,不是找左节点最深的值!!遍历深度,判断最大深度,存储后再与下一个相同深度的比较,先左后右,也就是从左到右的顺序来判断的,所以能找到树下左下角的值classSolution{intmaxdepth=0;intresult=0;......
  • 罐液位变化组件
    接上篇 <template><divclass="jarBox"><!--罐子整体+盖--><divclass="bar"><!--罐顶--><divclass="barBefore"></div></div><!--里面液体整体-->......