tnblog
首页
视频
资源
登录

vue3 简单的element plus 表格table 页面基础模板

230人阅读 2025/5/8 15:59 总访问:725288 评论:0 收藏:0 手机
分类: 前端

简单的基础模板

  1. <template>
  2. <div class="expiredItems-container">
  3. <el-card>
  4. <el-table border :data="tableInfoState.data" v-loading="tableInfoState.loading" style="margin-top: 10px">
  5. <el-table-column align="center" label="序号" width="65">
  6. <template #default="{ $index }">
  7. {{ $index + 1 }}
  8. </template>
  9. </el-table-column>
  10. <el-table-column align="center" label="批次名称" min-width="179" prop="batchNumber" />
  11. <el-table-column align="center" label="物品名称" min-width="109" prop="itemName" />
  12. <el-table-column align="center" label="剩余库存" min-width="109" prop="remainingStock" />
  13. <el-table-column prop="expiryDate" label="过期时间" min-width="109" show-overflow-tooltip>
  14. <template #default="scope">
  15. <span>{{ dayjs(scope.row.expiryDate).format('YYYY-MM-DD HH:mm:ss') }}</span>
  16. </template>
  17. </el-table-column>
  18. </el-table>
  19. </el-card>
  20. </div>
  21. </template>
  22. <script setup lang="ts" name="tasks">
  23. import { reactive, onMounted, ref } from 'vue';
  24. import { ElMessageBox, ElMessage, dayjs } from 'element-plus';
  25. import request from '/@/utils/requestTools';
  26. // 表格数据相关
  27. const tableInfoState = reactive({
  28. data: [],
  29. total: 0,
  30. loading: false,
  31. param: {
  32. key: '',
  33. pageIndex: 1,
  34. pageSize: 10,
  35. },
  36. });
  37. onMounted(() => {
  38. getExpiryBatchStatistics();
  39. });
  40. const getExpiryBatchStatistics = async () => {
  41. tableInfoState.loading = true;
  42. const result: any = await request.get('/watertap/api/Batches/GetExpiryBatchStatistics', tableInfoState.param);
  43. tableInfoState.data = result.data.data;
  44. tableInfoState.loading = false;
  45. };
  46. </script>
  47. <style scoped="scoped" lang="scss">
  48. .expiredItems-container {
  49. padding: 15px;
  50. }
  51. </style>

包含分页条与搜索框的

  1. <template>
  2. <div class="expiredItems-container">
  3. <el-card>
  4. <div class="toolbar">
  5. <div>
  6. <el-button type="primary" :icon="Plus" size="default" >添加 </el-button>
  7. </div>
  8. <div class="search">
  9. <!-- <el-select v-model="tableInfoState.param.levelId" class="select-level searchinput" size="default" clearable>
  10. <el-option v-for="sh in levelList" :key="sh.id" :value="sh.id" :label="sh.label" />
  11. </el-select> -->
  12. <el-input v-model="tableInfoState.param.key" placeholder="名称" class="searchinput" size="default" clearable />
  13. <el-button type="primary" :icon="Search" size="default" @click="getExpiryBatchStatistics">搜索</el-button>
  14. </div>
  15. </div>
  16. <el-table border :data="tableInfoState.data" v-loading="tableInfoState.loading" style="margin-top: 10px">
  17. <el-table-column align="center" label="序号" width="65">
  18. <template #default="{ $index }">
  19. {{ $index + 1 }}
  20. </template>
  21. </el-table-column>
  22. <el-table-column align="center" label="批次名称" min-width="179" prop="batchNumber" />
  23. <el-table-column align="center" label="物品名称" min-width="109" prop="itemName" />
  24. <el-table-column align="center" label="剩余库存" min-width="109" prop="remainingStock" />
  25. <el-table-column prop="expiryDate" label="过期时间" min-width="109" show-overflow-tooltip>
  26. <template #default="scope">
  27. <span>{{ dayjs(scope.row.expiryDate).format('YYYY-MM-DD HH:mm:ss') }}</span>
  28. </template>
  29. </el-table-column>
  30. </el-table>
  31. <div style="margin: 20px auto; text-align: center; display: flex; justify-content: center">
  32. <el-pagination
  33. background
  34. size="default"
  35. @current-change="handleCurrentChange"
  36. layout="total,sizes,prev, pager, next"
  37. :page-sizes="[5, 10, 20, 30]"
  38. @size-change="handleSizeChange"
  39. :current-page="tableInfoState.param.pageIndex"
  40. :page-size="tableInfoState.param.pageSize"
  41. :total="tableInfoState.total"
  42. />
  43. </div>
  44. </el-card>
  45. </div>
  46. </template>
  47. <script setup lang="ts" name="tasks">
  48. import { reactive, onMounted, ref } from 'vue';
  49. import { Search, Plus, Edit } from '@element-plus/icons-vue';
  50. import { ElMessageBox, ElMessage, dayjs } from 'element-plus';
  51. import request from '/@/utils/requestTools';
  52. // 表格数据相关
  53. const tableInfoState = reactive({
  54. data: [],
  55. total: 0,
  56. loading: false,
  57. param: {
  58. key: '',
  59. pageIndex: 1,
  60. pageSize: 10,
  61. },
  62. });
  63. onMounted(() => {
  64. getExpiryBatchStatistics();
  65. });
  66. const getExpiryBatchStatistics = async () => {
  67. tableInfoState.loading = true;
  68. const result: any = await request.get('/watertap/api/Batches/GetExpiryBatchStatistics', tableInfoState.param);
  69. tableInfoState.data = result.data.data;
  70. tableInfoState.total = result.data.dataCount;
  71. tableInfoState.loading = false;
  72. };
  73. const handleCurrentChange = (val: number) => {
  74. tableInfoState.param.pageIndex = val;
  75. getExpiryBatchStatistics();
  76. };
  77. const handleSizeChange = (val: number) => {
  78. // 改变了每页的条数后重新从第一页开始吧
  79. tableInfoState.param.pageIndex = 1;
  80. tableInfoState.param.pageSize = val;
  81. getExpiryBatchStatistics();
  82. };
  83. </script>
  84. <style scoped="scoped" lang="scss">
  85. .expiredItems-container {
  86. padding: 15px;
  87. .toolbar {
  88. display: flex;
  89. justify-content: space-between;
  90. .search {
  91. display: flex;
  92. .searchinput {
  93. width: 199px;
  94. }
  95. }
  96. .search > * {
  97. margin-left: 6px;
  98. }
  99. }
  100. }
  101. </style>

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

vue3,vue组件,props给一个对象参数。vue组件间传参数vue父组件给子组件传参数。组件参数类型。父组件调用子组件的方法。vue组件事件监听,给子组件传递方法,子组件调用父组件方法

[TOC]组件可以使用props给组件传值,可以同时传递多个,可以是任意类型,比如字符串或者对象。 下面是个简单的例子: &lt...

vue3最基础的数据加载,表格table

vue3表格加载一点静态数据 &lt;template&gt; &lt;el-table :data=&quot;tableData&quot; style=&quot;width: 100%&quot...

vue3 element plus 表单输入框放到一行

当垂直方向空间受限且表单较简单时,可以在一行内放置表单。 通过设置 inline 属性为 true 可以让表单域变为行内的表单域...

vue3 Element ui Plus 表格 分页,vue3 el-pagination分页

其实就是el-pagination控件的使用而已 &lt;template&gt; &lt;div&gt; &lt;el-table :data=&quot;tableData&quot; ...

vue触发a标签的点击事件。vue3 dom操作 触发点击事件 。文件选择库只会触发一次change事件的问题

[TOC]vue触发a标签的点击事件直接操作dom节点的方式比较简单 &lt;button @click=&quot;handleBtnClick&quot;&gt;点击按钮&...

vue3 ref的使用多个ref的使用。通过ref触发点击事件

多个ref获取的方法可以使用一样的,通过变量名来区分就行了 const vabUploadRef = ref() const multipleTableRef = ref() ...

vue elementui,vue3 element plus 文件上传的时候设置其他参数。后台.net接收传递的额外参数。图片上传

比如上传文件的时候额外传递两个select选择的值 前台前面上传文件的时候要提供默认参数很简单,el-upload绑定一个data即可...

vue,vue3 打开新页面,页面跳转。vue跳转到一个新页面。vue路由传参,vue3路由传参,vue3 获取路由参数

[TOC]VUE页面跳转本地页面跳转 goApplicationCenter() { //进行页面跳转 let path = &quot;/application-center&quo...

vuevue3组件封装,vue组件模板。简单组件模板。基础组件模板。vue引入自定义的组件。vue使用自定义的组件。插槽slot使用。vue封装格子效果,一块一块的grid布局效果

[TOC]vue封装组件的简单模板贴一个简单模板方便自定义组件的时候直接复制 &lt;template&gt; &lt;div class=&quot;app...

.net6 Signalr+vue3 的运用(上)

.net6 Signalr+Vue3 的运用(上)[TOC] 什么是 SignalR?ASP.NET Core SignalR 是一个开放源代码库,可用于简化向应用添加...

.net6 Signalr+vue3 的运用(下)

.net6 Signalr+Vue3 的运用(下)[TOC] 上篇链接:https://www.tnblog.net/hb/article/details/7961SignalR 中的用户 Sig...

.net6 Signalr+vue3 配合Ingress Nginx的运用

.net6 Signalr+Vue3 配合Ingress Nginx的运用[TOC] 结合上篇:https://www.tnblog.net/hb/article/details/7963 项目打...

vue3 element plus 表格使用vue3常用界面搭配。vue3基础模板使用

一个简单的表格加时间搜索界面效果如下: 代码如下: &lt;template&gt; &lt;div class=&quot;app-container&quot;&g...

vue3 如何加prototype。vue3使用globalProperties

在2.X版本中创建一个vue 实例是通过 new Vue()来实现的,到了3.X中则是通过使用createApp这个 API返回一个应用实例,并且可...
真诚,善良,美好,温柔,皆是你
排名
9
文章
120
粉丝
5
评论
5
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术