前端页面实现【矩阵表格与列表】
实现页面:

1.动态表绘制(可用于矩阵构建)

<template><div><h4><b>基于层次分析法的权重计算</b></h4><table table-layout="fixed"><thead><tr><th v-for="(_, colIndex) in (numRows + 1)" :key="colIndex">{{colIndex===0?"图层":layers[colIndex-1]}}</th></tr></thead><tbody ><tr v-for="(rowData, rowIndex) in generateTableData(numRows)" :key="rowIndex" :style="{ '--wid': wid}"><tdv-for="(cell, colIndex) in rowData":key="colIndex":class="{ nonEditable: isNonEditable(rowIndex, colIndex) }">{{rowData[colIndex]}}<inputv-if="colIndex!==0&&!isNonEditable(rowIndex, colIndex)"type="text"v-model="rowData.values[colIndex]"style="width: 100%;border: none;text-align: center"/><span v-else>{{ value }}</span></td></tr></tbody></table></div>
</template>
<script>
export default {name: 'TimeManagementTable',props:{layers:{type:Array,required: true,default: ()=>['地质', '水文', '其他','W']},},data() {return {numRows:null ,wid:null};},created() {this.numRows = this.layers.length;this.wid = 100/(this.numRows+1) + '%';},methods: {isNonEditable(rowIndex, colIndex) {// 假设我们想让第二列的第二个单元格(索引为1, 1)为灰色且不可编辑// 你可以根据实际需求调整这个逻辑return colIndex!==0&rowIndex+1>=colIndex||colIndex===this.numRows;},generateTableData(numRows) {const tableData = [];for (let i = 0; i < numRows-1; i++) {let arr= Array(numRows + 1).fill('')arr[0]=this.layers[i]tableData.push(arr); // 填充空字符串或你需要的默认值}return tableData;}},
};
</script><style scoped>
/* 样式可以根据需要添加 */
table {width: 100%;
}
th, td {border: 1px solid black;padding: 8px;text-align: center;width: var(--wid);
}
核心要点:
-
动态性:可根据不同数据项动态自适应构建表格
记录数组长度,根据数组长度动态设置行列号数以及其列宽
<tr v-for="(rowData, rowIndex) in generateTableData(numRows)" :key="rowIndex" :style="{ '--wid': wid}">data() {
return {
numRows:null ,
wid:null
};
},created() {
this.numRows = this.layers.length;
this.wid = 100/(this.numRows+1) + '%';
},th, td {
border: 1px solid black;
padding: 8px;
text-align: center;
width: var(--wid);
}
-
表格单元格权限控制:只有指定单元格可编辑,收集用户输入数据,其余为灰色且不可编辑
<td
v-for="(cell, colIndex) in rowData"
:key="colIndex"
:class="{ nonEditable: isNonEditable(rowIndex, colIndex) }"
>
{{rowData[colIndex]}}
<input
v-if="colIndex!==0&&!isNonEditable(rowIndex, colIndex)"
type="text"
v-model="rowData.values[colIndex]"
style="width: 100%;border: none;text-align: center"
/>
<span v-else>{{ value }}</span>isNonEditable(rowIndex, colIndex) {
// 假设我们想让第二列的第二个单元格(索引为1, 1)为灰色且不可编辑
// 你可以根据实际需求调整这个逻辑
return colIndex!==0&rowIndex+1>=colIndex||colIndex===this.numRows;
},
-
表格标题行和列设置:设置表格头和表格第一列为指定数组内的名称
<thead>
<tr>
<th v-for="(_, colIndex) in (numRows + 1)" :key="colIndex">{{colIndex===0?"图层":layers[colIndex-1]}}</th>
</tr>
</thead>
<tbody >
<tr v-for="(rowData, rowIndex) in generateTableData(numRows)" :key="rowIndex" :style="{ '--wid': wid}">
<td
v-for="(cell, colIndex) in rowData"
:key="colIndex"
:class="{ nonEditable: isNonEditable(rowIndex, colIndex) }"
>
{{rowData[colIndex]}}
<input
v-if="colIndex!==0&&!isNonEditable(rowIndex, colIndex)"
type="text"
v-model="rowData.values[colIndex]"
style="width: 100%;border: none;text-align: center"
/>
<span v-else>{{ value }}</span>
</td>
</tr>
</tbody>
2.类C#中控件前端实现:

<template><div class="app-container standard-level"><el-row><el-col :span="24"><el-card class="box-card"><div slot="header" class="clearfix"><span>StandardLevel</span></div><div><!-- 指标选择 --><div id="indicator" style="border: gray 1px dashed; padding: 5px;"><span class="title"> 指标创建</span><el-form size="small" :inline="true"><el-form-item label="指标类别" class="form-label" ><el-inputv-model="indicatorType"placeholder="请输入指标类别"clearablesize="small"/></el-form-item><el-form-item class="flex-container" ><div class="flex-container"><div class="flex-item" v-for="item in layers" :key="item.id"><el-checkbox :label="item.id" style="margin: 8px 0;">{{ item.name }}</el-checkbox></div></div></el-form-item></el-form><!-- 操作按钮 --><div class="buttons" style="display: flex;justify-content: center;"><el-button type="primary" size="mini" @click="addNode">添加</el-button><el-button type="warning" size="mini" @click="modifyNode">确定</el-button><el-button type="danger" size="mini" @click="cancel">取消</el-button></div></div><div id="list" style="margin-top: 10%;border: gray 1px dashed; padding: 5px;"><span class="title">层次结构</span><!-- 层次结构 --><el-tree:data="treeData":props="defaultProps"show-checkboxnode-key="id"ref="tree"></el-tree></div></div></el-card></el-col></el-row>
</div>
</template><script>
import ElementForm from '@/plugins/package/panel/form/ElementForm.vue'export default {components: { ElementForm },data() {return {indicatorType:'',selectedCategory: '',selectedIndicators: [],layers:[{ id: '001', name: '塌陷点buf' },{ id: '002', name: '断裂buf' },{ id: '003', name: '水系buf300' },{ id: '004', name: '轨道交通buf' },{ id: '005', name: '地下水变幅' },{ id: '006', name: '第四系厚度' },{ id: '007', name: '工程地质' },{ id: '008', name: '岩溶水富水性' },],treeData: [{label: '地层条件',children: [{ label: '剥蚀buf' },{ label: '第四系厚度' },{ label: '工程地质' },],},{ label: '水文条件' },{ label: '其他条件' },],defaultProps: {children: 'children',label: 'label',},};},methods: {addNode() {// 添加节点的逻辑},modifyNode() {// 修改节点的逻辑},cancel() {// 取消操作的逻辑},},
};
</script><style scoped>
.standard-level {padding: 20px;width: 30%;
}
.form-label {margin-bottom: 10px;
}
.buttons {margin-top: 20px;
}
.flex-container {display: flex;flex-wrap: wrap;.flex-item {width: 50%;}
}
span.title{display : block;width : 25%;height: 15px;font-weight: bold;font-size: 16px;position: relative;top:-15px;text-align: center;background: white;
}</style>
核心要点:
-
checkbox列对齐设置

Element ui 丨el-checkbox-group 布局对齐_el-checkbox-group 对齐方式-CSDN博客
-
边框上显示字体设置
<div id="indicator" style="border: gray 1px dashed; padding: 5px;">
<span class="title"> 指标创建</span></div>
span.title{
display : block;
width : 25%;
height: 15px;
font-weight: bold;
font-size: 16px;
position: relative;
top:-15px;
text-align: center;
background: white;
}
相关文章:
前端页面实现【矩阵表格与列表】
实现页面: 1.动态表绘制(可用于矩阵构建) <template><div><h4><b>基于层次分析法的权重计算</b></h4><table table-layout"fixed"><thead><tr><th v-for"(_, colI…...
GPT4v和Gemini-Pro调用对比
要调用 GPT-4 Vision (GPT-4V) 和 Gemini-Pro,以下是详细的步骤分析,包括调用流程、API 使用方法和两者之间的区别,以及效果对比和示例。 GPT-4 Vision (GPT-4V) 调用步骤 GPT-4 Vision 主要通过 OpenAI 的 API 进行调用,用于处…...
破布叶(Microcos paniculata)单倍型染色体级别基因组-文献精读22
Haplotype-resolved chromosomal-level genome assembly of Buzhaye (Microcos paniculata) 破布叶、布渣叶(Microcos paniculata)单倍型解析染色体级别基因组组装 摘要 布渣叶(Microcos paniculata)是一种传统上用作民间药物和…...
浅谈RC4
一、什么叫RC4?优点和缺点 RC4是对称密码(加密解密使用同一个密钥)算法中的流密码(一个字节一个字节的进行加密)加密算法。 优点:简单、灵活、作用范围广,速度快 缺点:安全性能较差&…...
uniapp微信小程序开发物料
开发工具 HBuilder: HBuilderX-高效极客技巧 vscode 1、在vscode中新建一个项目npx degit dcloudio/uni-preset-vue#vite-ts 项目名称 2、在HBuilder中可以可视化进行新建项目 路由 在app.json文件中配置pages路由路径 路由跳转方法 uni.navigateTo(OBJECT)…...
大数据工程师如何做到数据可视化?
好的数据可视化作品都是通过不断的数据对比分析实战出来的。 今天给大家带来一篇大数据工程师干货,从多角度解析做数据可视化的重要性,并解读一些适用的应用场景。大数据工程师们刷到这篇文章时一定要进来看看,满满的干货。 目录 1. 什么是数…...
Java 序列化与反序列化
Java 序列化是一种将对象的状态转换为字节流的机制,以便可以将该对象的状态保存到文件、数据库或通过网络传输。在反序列化过程中,这些字节流可以被重新转换为对象。序列化主要用于以下几种情况: 持久化存储:将对象的状态保存到文…...
自定义防抖注解
问题场景 在开发中由于可能存在的网络波动问题导致用户重复提交,所以自定义一个防抖注解。设计思路:自定义注解加在接口的方法上,注解中设置了SPEL表达式,可以通过SPEL表达式从接口参数中提取Redis的Key,以这个Key作为…...
【尚庭公寓SpringBoot + Vue 项目实战】登录管理(十八)
【尚庭公寓SpringBoot Vue 项目实战】登录管理(十八) 文章目录 【尚庭公寓SpringBoot Vue 项目实战】登录管理(十八)1、登录业务介绍2、接口开发2.1、获取图形验证码2.2、登录接口2.3、获取登录用户个人信息 1、登录业务介绍 登…...
【html】用html+css做地表最强王者荣耀辅助工具
源码: <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title><style>* {margin: 0;padding: 0;}body{background-color: blue;}.con {width: 300px;height: 500px;background-color: rgba(230,…...
TF-IDF、BM25传统算法总结
1. TF-IDF算法 F-IDF(词频-逆文档频率)是一种用于衡量文本中词语重要性的方法,特别适用于信息检索和文本挖掘任务。下面会拆分为两部分深入讲解TF-IDF的计算过程,以便更好地理解。 TF-IDF的计算过程可以分为两个主要部分…...
项目五 OpenStack镜像管理与制作
任务一 理解OpenStack镜像服务 1.1 •什么是镜像 • 镜像通常 是指一系列文件或一个磁盘驱动器的精确副本 。 • 虚拟机 所使用的虚拟磁盘, 实际上是 一种特殊格式的镜像文件 。 • 云 环境下尤其需要 镜像。 • 镜像 就是一个模板,类似于 VMware 的虚拟…...
LabVIEW回热系统热经济性分析及故障诊断
开发了一种利用LabVIEW软件的电厂回热系统热经济性分析和故障诊断系统。该系统针对火电厂回热加热器进行优化,通过实时数据监控与分析,有效提高机组的经济性和安全性,同时降低能耗和维护成本。系统的实施大幅提升了火电厂运行的效率和可靠性&…...
设计模式-迭代器模式
目录 一:基本介绍 二:原理说明 三:案例说明 四:优点 五:缺点 一:基本介绍 1)属于行为模式 2)如果我们的集合元素是用不同的方式实现的,有数组,还有java的集合类,或者还有其他方式,当客户 端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以…...
UV胶带和UV胶水的应用场景有哪些不同吗?
UV胶带和UV胶水的应用场景有哪些不同吗? UV胶带和UV胶水的应用场景确实存在不同之处,以下是详细的比较和归纳: 一:按使用场景来看: UV胶带的应用场景: 包装行业:UV胶带在包装行业中常用于食品包装、药…...
监控员工上网软件有哪些|4款好用的员工上网行为管理软件推荐
在当今数字化办公环境中,确保网络安全、提升工作效率、以及规范员工上网行为成为企业管理的重要组成部分。 为此,一套高效的员工上网行为管理软件显得尤为关键。 本文将为您推荐五款市场上广受好评的员工上网行为管理软件,帮助您有效监控与管…...
【IPython的使用技巧】
🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…...
最新AI智能聊天对话问答系统源码(详细图文搭建部署教程)+AI绘画系统(Midjourney),DALL-E3文生图,TTS语音识别输入,文档分析
一、文章前言 随着人工智能技术的持续进步,AI绘画已经发展成为一个日益成熟的领域。越来越多的人开始尝试使用AI绘画软件来创作艺术作品。尽管这些AI绘画软件对绘画领域产生了显著影响,但它们并不会完全取代画师。与传统手绘不同,AI绘画可以…...
项目四 OpenStack身份管理
任务一 理解身份服务 1.1 •Keystone的基本概念 • 认证 ( Authentication ) —— 确认 用户身份的过程,又称身份验证 。 • 凭证 ( Credentials ) —— 又 称凭据,是用于确认用户身份的数据 。 • 令牌 …...
【后端】websocket学习笔记
文章目录 1. 消息推送常见方式1.1 轮询 VS 长轮询1.2 SSE(server-sent event)服务器发送事件 2. websocket介绍2.1 介绍2.2 原理2.3 websoket API2.3.1 客户端【浏览器】API2.3.2 服务端API 3. 代码实现3.1 流程分析3.2 pom依赖3.3 配置类3.4 消息格式3.5 消息类 4.…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...
加密通信 + 行为分析:运营商行业安全防御体系重构
在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...
flow_controllers
关键点: 流控制器类型: 同步(Sync):发布操作会阻塞,直到数据被确认发送。异步(Async):发布操作非阻塞,数据发送由后台线程处理。纯同步(PureSync…...
LeetCode 0386.字典序排数:细心总结条件
【LetMeFly】386.字典序排数:细心总结条件 力扣题目链接:https://leetcode.cn/problems/lexicographical-numbers/ 给你一个整数 n ,按字典序返回范围 [1, n] 内所有整数。 你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。…...
