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

基于element-plus的基础表单样式

在这里插入图片描述

<template><div class="config-page"><!-- 面包屑 --><div class="breadcrumb-header">表单项目配置</div><!-- 搜索栏 --><div ref="searchRef" class="search-container"><el-form :model="searchForm" label-width="auto" class="search-form"><el-form-item label="项目名称"><el-input v-model="searchForm.projectName" placeholder="请输入项目名称" /></el-form-item><el-form-item class="search-actions"><el-button type="primary" @click="handleSearch">查 询</el-button><el-button @click="handleReset">重 置</el-button></el-form-item></el-form></div><!-- 操作栏 --><div class="operation-btns"><el-button @click="handleAdd">添 加</el-button></div><!-- table表格 --><div class="main" :style="{ height: tableHeight }"><el-table :data="tableData" stripe v-loading="loading" style="width: 100%;height: 100%"><el-table-column prop="date" label="Date" width="180" /><el-table-column prop="name" label="Name" width="180" /><el-table-column prop="address" label="Address" /><el-table-column label="操作" width="120" fixed="right"><template #default><el-button link type="primary">编辑</el-button><el-button link type="danger">删除</el-button></template></el-table-column></el-table></div><!-- 分页 --><div class="footer"><el-pagination v-model:current-page="searchForm.currentPage" v-model:page-size="searchForm.pageSize":page-sizes="[20, 50, 100, 200]" :total="total" layout="total, sizes, prev, pager, next, jumper"@current-change="handleCurrentChange" @size-change="handleSizeChange" /></div><el-dialog v-model="dialogVisible" :title="dialogTitle" width="500"><el-form :model="form" label-width="auto"><el-form-item label="项目名称"><el-input v-model="form.projectName" autocomplete="off" /></el-form-item></el-form><template #footer><div class="dialog-footer"><el-button @click="dialogVisible = false">取 消</el-button><el-button type="primary" @click="dialogVisible = false">确 定</el-button></div></template></el-dialog></div>
</template><script setup>
import { ref, useTemplateRef, onMounted, onBeforeUnmount } from 'vue'
import { debounce } from 'lodash-es'// 表格容器高度
const tableHeight = ref('auto')// 计算表格高度
const calculateTableHeight = () => {// 面包屑高度const headerHeight = 41// 搜索栏高度const searchHeight = searchRef.value.offsetHeight// 操作按钮栏高度const operationHeight = 56// 分页高度const footerHeight = 56tableHeight.value = `calc(100% - ${headerHeight + searchHeight + operationHeight + footerHeight}px)`
}// 防抖的resize处理
const debouncedResize = debounce(() => {calculateTableHeight()
}, 200)// 查询条件
const searchForm = ref({projectName: '',currentPage: 1,pageSize: 20
})const loading = ref(false)
const tableData = ref([])
const total = ref(0)// 获取表格数据
const fetchTableData = async () => {try {loading.value = truesetTimeout(() => {tableData.value = [{date: '2016-05-03',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-02',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-04',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-01',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-03',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-02',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-04',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-01',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},]total.value = 8loading.value = false}, 500)} catch (error) {loading.value = falseconsole.error('获取数据失败:', error)}
}const searchRef = useTemplateRef('searchRef')
// 搜索
const handleSearch = () => {searchForm.value.currentPage = 1fetchTableData()
}// 重置
const handleReset = () => {searchForm.value = {projectName: '',currentPage: 1,pageSize: 20}fetchTableData()
}// current-page 改变时触发
const handleCurrentChange = (val) => {searchForm.value.currentPage = valfetchTableData()
}// 分页大小变化
const handleSizeChange = (size) => {searchForm.value.pageSize = sizefetchTableData()
}// 添加
const handleAdd = () => {dialogVisible.value = true
}// 初始化数据
fetchTableData()const dialogVisible = ref(false)
const dialogTitle = ref('添加项目')const form = ref({projectName: '',
})onMounted(() => {calculateTableHeight()window.addEventListener('resize', debouncedResize)
})onBeforeUnmount(() => {window.removeEventListener('resize', debouncedResize)
})</script><style scoped>
.config-page {width: 100%;height: 100%;display: flex;flex-direction: column;overflow: hidden;
}.breadcrumb-header {width: 100%;height: 41px;display: flex;align-items: center;border-bottom: 1px solid #e0e0e0;padding: 0 10px;color: #606266;
}.search-container {width: 100%;height: auto;border-bottom: 1px solid #e0e0e0;display: flex;flex-wrap: wrap;align-items: center;
}.main {padding: 0 10px 10px 10px;
}.operation-btns {width: 100%;height: 56px;display: flex;align-items: center;padding: 0 10px;
}.footer {width: 100%;height: 56px;display: flex;justify-content: flex-end;align-items: center;padding: 0 10px;border-top: 1px solid #e0e0e0;
}.search-form {width: 100%;display: flex;flex-wrap: wrap;padding-top: 10px;
}.el-form-item {margin: 0 10px 10px 10px;
}.search-actions {margin-left: auto;
}:deep(.el-table--fit .el-table__inner-wrapper:before) {display: none;
}
</style>
http://www.dtcms.com/a/332602.html

相关文章:

  • [微服务]ELK Stack安装与配置全指南
  • Pytest项目_day17(随机测试数据)
  • 大模型微调分布式训练-大模型压缩训练(知识蒸馏)-大模型推理部署(分布式推理与量化部署)-大模型评估测试(OpenCompass)
  • 专题:2025跨境电商市场布局、供应链与产业带赋能报告 |附130+份报告PDF、原数据表汇总下载
  • Sparse-ICP—(3) 点到面稀疏迭代最近点算法(matlab版)
  • PDF Replacer:高效便捷的PDF文档内容替换专家
  • 国内多光谱相机做得好的厂家有哪些?-多光谱相机品牌厂家
  • 8月4日实训考察:重庆五一职院走进成都国际影像产业园
  • ffmpeg-调整视频分辨率
  • 网站与政务新媒体自查情况的报告工具功能
  • Web攻防-大模型应用LLM搭建接入第三方内容喂养AI插件安全WiKI库技术赋能
  • 编程练习---邮费计算
  • 计算机网络 THU 考研专栏简介
  • SDN控制器是什么?它在网络里的作用相当于什么?
  • Easy Rules 规则引擎详解
  • 数据结构:二叉树的表示方式(Representation of Binary Trees)
  • 基于MIMO的MATLAB预编码
  • 【Kubernetes知识点问答题】kubernetes 控制器
  • 力扣400:第N位数字
  • JavaScript性能优化30招
  • 「 CentOS7 安装部署k8s」
  • 2025新版 工业级定位系统哪家技术好?
  • 用3D打印重新定义骑行-中科米堆CASAIM自行车座椅个性化设计
  • 源网荷储充:零碳园区实现 “净零排放” 的系统解决方案
  • WinForm 简单用户登录记录器实现教程
  • 【3D图像技术分析及实现】3DGS与深度学习网络结合以实现跨场景迁移的研究调研
  • LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。
  • Product Hunt 每日热榜 | 2025-08-15
  • 【Linux基础知识系列】第九十五篇 - 使用who和w命令查看登录用户
  • Java——ACM编程