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

ElementUI table+dialog实现一个简单的可编辑的表格

table组件如何实现可编辑呢?

我的需求是把table组件那样的表格,实现它点击可以弹出一个框,然后在这个框里面输入你的东西,然后将他回显回去,当然,输入的有可能是时间啥的。

为什么要弹出弹层不在框上直接编辑呢?因为框太小了,用户可能看不见输入的是啥。

我们可以利用element组件的插槽,获取数值,然后回显到表格里。

HTML部分

我用了一个弹层来写这个功能,如果测试效果,可以直接在主页面引入 ,将弹层的控制开关改为true。

<template><el-drawer v-model="drawerVisible" size="calc(100% - 210px)" @close="resetForm"><el-container><el-form ref="ruleFormRef2" label-position="right" :model="form" label-width="138px"><div class="form-left"><div class="sepcial_about"><div class="tableForm"><el-table :data="testDatas" border style="width: 700px"><el-table-column v-for="(col, idx) in columnList" :key="col.prop" :index="idx" :width="idx === 1 ? '180px' : ''"><template #header><p>{{ col.label }}</p></template><template #default="{ row }"><p :class="col.prop == 'remark' ? 'p_remark' : 'p1111'" @click="e => handleEdit(0, row, col)">{{ col.prop == "time" ? changeTime(row[col.prop]) : row[col.prop] }}</p></template></el-table-column><el-table-column width="120"><template #header><p class="p_specail">操作</p></template><template #default="scope"><p class="p1111"><el-button link type="primary" size="large" @click.prevent="delRow(scope, 0)">删除</el-button></p></template></el-table-column></el-table><el-button type="primary" class="mt-4" style="width: 100%" @click="addRow(0)">新增</el-button></div></div></div></el-form><el-dialog v-model="dialogVisible" title="添加" width="30%" center align-center><span>{{ sureMsg }}</span><template #footer><span class="dialog-footer"><el-button type="primary" @click="toSure">确 认</el-button></span></template></el-dialog><el-dialog v-model="addDialog" :title="addTitle" width="30%" center align-center><el-date-picker v-if="isTime" v-model="addinput" type="daterange" format="YYYY/MM/DD" value-format="YYYY-MM-DD" /><el-inputv-if="isNum"resize="none"maxlength="15"show-word-limitv-model="addinput"type="textarea"size="large"placeholder="请输入"/><el-inputv-if="!isNum && !isTime"resize="none"maxlength="500"show-word-limitv-model="addinput"type="textarea"size="large"placeholder="请输入"/><template #footer><span class="dialog-footer"><el-button type="primary" @click="sava">保存</el-button></span></template></el-dialog></el-container></el-drawer>
</template>

JS

1.渲染数据集合

自定义的表头,HTML结构中通过v-for 循环表头列表,进行label的取值来构建最基础的表格

// 表格之中的数据
const testDatas: any = ref([]);// 表头列表
const columnList: any = ref([{ prop: "projectName", label: "测试1" },{ prop: "time", label: "时间段" },{ prop: "projectContentSummary", label: "测试2" }
]);

2.handleEdit函数

这个函数主要是用来控制弹层的弹出,通过行的标签名字判断需要什么输入的值。根据whatSava的值来判断你点击的是哪个表格,这个参数在HTML结构写死,cellRow和cellCol就是在渲染的时候带入的行的值和列的值。可以获得标签名字或者prop字段用来做判断。当然,这些名字也可以用来设置弹出弹框的弹框名字。

然后判断prop的值来看是不是需要输入 或者是 时间段格式的,让各自的开关变为true或者false

并且根据cellRow[cellCol.prop]这个值来对弹出来的框进行赋值,也就是回显。

const addinput = ref("");
const addTitle = ref("");
const addCode = ref();
const addProp = ref();
const isTime = ref(false);
const savaWhat = ref();
const isNum = ref(false);
const handleEdit = (whatSava: any, cellRow: any, cellCol: any) => {if (whatSava == "0") {savaWhat.value = 0;}if (cellCol.prop == "ceshi1" || cellCol.prop == "ceshi2") {isTime.value = false;if (cellCol.prop == "ceshi2") {isNum.value = true;} else {isNum.value = false;}addTitle.value = cellCol.label;addProp.value = cellCol.prop;addCode.value = cellRow.index;addinput.value = cellRow[cellCol.prop];addDialog.value = true;} else {isTime.value = true;addTitle.value = cellCol.label;addProp.value = cellCol.prop;addCode.value = cellRow.index;addinput.value = cellRow[cellCol.prop];addDialog.value = true;}
};

3.保存弹框函数

这个函数就是弹出层的保存函数,先找到你点击的是哪个框,然后把弹框里面输入的东西赋值给他,如果是数字的话,就用正则限制一下,不让他输入数字以外的东西。最后要清空一下,防止下次回显。

const sava = () => {let idx = testDatas.value.findIndex((p: any) => p.index == addCode.value);if (addProp.value == "ceshi2") {if (!/^[0-9]*$/.test(addinput.value)) {ElMessage.warning("请输入数字");return;}testDatas.value[idx][addProp.value] = addinput.value;} else {testDatas.value[idx][addProp.value] = addinput.value;}addinput.value = "";addDialog.value = false;
};

4.清洗时间格式函数

因为我们日期时间选择器,得到的是一个数组,所以我们回显的时候,应该拿数组的第一项和第二项,然后拼接起来,得到我们回显的正确格式。

//时间格式清洗
const changeTime = (data: any) => {if (!data) {return "";} else {let data1 = data[0] + "~" + data[1];return data1;}
};

5.添加函数

只需要我们知道添加的是哪个表格的,单表格就可以忽略whatAdd这个参数。

逻辑就是先判断他是不是为空,为空的话给他单纯的加一行,不为空的话,得到数组的长度,给他加一个index,我在写的过程中,发现我们没有办法获得一个标识,所以我写了一个index来当作唯一标识,当然,这个在获取后端接口的时候,需要你获取后端给你数组的长度,然后再依次相加就不会导致错误的出现。

// 添加一行
const addRow = (whatAdd: number) => {if (whatAdd == 0) {let obj: any = {};if (testDatas.value.length == 0) {obj.index = "0";columnList.value.forEach((p: any) => {obj[p.prop] = "";});testDatas.value[0] = obj;} else {const weiyi = testDatas.value[testDatas.value.length - 1].index;columnList.value.forEach((p: any) => {obj[p.prop] = "";});obj.index = String(Number(weiyi) + 1);testDatas.value[testDatas.value.length] = obj;}}
};

6.删除函数

因为删除标签在table表格之中,所以我们可以用scope准确的获得是哪一行,然后用whatDel判断你删除的是哪个表格。

//删除
const delRow = (scope: any, whatDel: number) => {const arrIndex = scope.$index; //唯一标识//将testDatas中的第arrIndex项数据删除if (whatDel == 0) {testDatas.value.splice(arrIndex, 1);}
};

CSS

<style scoped lang="scss">
:deep(.el-textarea__inner) {height: 200px;
}
:deep(.cell) {text-align: center !important;height: 45px;padding: 0;
}
.p1111 {height: 50px;line-height: 50px !important;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;padding: 0;margin: 0;text-align: center !important;
}.tableForm {width: 700px;margin-left: 35px;margin-top: 20px;
}
.sepcial_about {width: 500px;padding-left: 40px;box-sizing: border-box;margin-bottom: 60px;position: relative;> :first-child {width: 1000px;margin-bottom: 10px;}
}
.sepcial_about .mt-4 {position: absolute;width: 40px !important;height: 30px !important;bottom: 10px;left: 800px;z-index: 999;
}
.sepcial_about :deep(.el-table) {display: block;height: 100%;
}
:deep(.el-date-editor) {width: 100% !important;height: 50px;text-align: center;
}.form-left {padding-top: 20px;
}:deep(.el-form-item__content) {/* margin-top: 20px; */margin-left: 40px !important;
}:deep(.el-form-item__label) {font-size: 16px;color: black;
}
</style>

 全部代码

<template><el-drawer v-model="drawerVisible" size="calc(100% - 210px)" @close="resetForm"><el-container><el-form ref="ruleFormRef2" label-position="right" :model="form" label-width="138px"><div class="form-left"><div class="sepcial_about"><div class="tableForm"><el-table :data="testDatas" border style="width: 700px"><el-table-column v-for="(col, idx) in columnList" :key="col.prop" :index="idx" :width="idx === 1 ? '180px' : ''"><template #header><p>{{ col.label }}</p></template><template #default="{ row }"><p :class="col.prop == 'remark' ? 'p_remark' : 'p1111'" @click="e => handleEdit(0, row, col)">{{ col.prop == "time" ? changeTime(row[col.prop]) : row[col.prop] }}</p></template></el-table-column><el-table-column width="120"><template #header><p class="p_specail">操作</p></template><template #default="scope"><p class="p1111"><el-button link type="primary" size="large" @click.prevent="delRow(scope, 0)">删除</el-button></p></template></el-table-column></el-table><el-button type="primary" class="mt-4" style="width: 100%" @click="addRow(0)">新增</el-button></div></div></div></el-form><el-dialog v-model="addDialog" :title="addTitle" width="30%" center align-center><el-date-picker v-if="isTime" v-model="addinput" type="daterange" format="YYYY/MM/DD" value-format="YYYY-MM-DD" /><el-inputv-if="isNum"resize="none"maxlength="15"show-word-limitv-model="addinput"type="textarea"size="large"placeholder="请输入"/><el-inputv-if="!isNum && !isTime"resize="none"maxlength="500"show-word-limitv-model="addinput"type="textarea"size="large"placeholder="请输入"/><template #footer><span class="dialog-footer"><el-button type="primary" @click="sava">保存</el-button></span></template></el-dialog></el-container></el-drawer>
</template><script setup lang="tsx" name="addConfig">
import { ref, reactive } from "vue";
import { ElMessage } from "element-plus";
const drawerVisible = ref(false);
const addDialog = ref(false);
const addinput = ref("");
const testDatas: any = ref([]);
const columnList: any = ref([{ prop: "ceshi1", label: "测试1" },{ prop: "time", label: "时间段" },{ prop: "ceshi2", label: "测试2" }
]);
const addTitle = ref("");
const addCode = ref();
const addProp = ref();
const isTime = ref(false);
const savaWhat = ref();
const isNum = ref(false);
const handleEdit = (whatSava: any, cellRow: any, cellCol: any) => {if (whatSava == "0") {savaWhat.value = 0;}if (cellCol.prop == "ceshi1" || cellCol.prop == "ceshi2") {isTime.value = false;if (cellCol.prop == "ceshi2") {isNum.value = true;} else {isNum.value = false;}addTitle.value = cellCol.label;addProp.value = cellCol.prop;addCode.value = cellRow.index;addinput.value = cellRow[cellCol.prop];addDialog.value = true;} else {isTime.value = true;addTitle.value = cellCol.label;addProp.value = cellCol.prop;addCode.value = cellRow.index;addinput.value = cellRow[cellCol.prop];addDialog.value = true;}
};
const sava = () => {let idx = testDatas.value.findIndex((p: any) => p.index == addCode.value);if (addProp.value == "ceshi2") {if (!/^[0-9]*$/.test(addinput.value)) {ElMessage.warning("请输入数字");return;}testDatas.value[idx][addProp.value] = addinput.value;} else {testDatas.value[idx][addProp.value] = addinput.value;}addinput.value = "";addDialog.value = false;
};
let form: any = reactive({});
//时间格式清洗
const changeTime = (data: any) => {if (!data) {return "";} else {let data1 = data[0] + "~" + data[1];return data1;}
};
//清空数据
const resetForm = () => {form.companyName = "";form.linkman = "";form.companyType = "";form.contactTitle = "";form.contactPhone = "";form.id1 = [];form.id2 = [];form.idCardPhoto = [];form.publicCreditInformationReportOfEnterpriseInstitutions = [];form.businessLicenseOrLegalRepresentativeCertificate = [];form.lastYearBankCertificationDocuments = [];form.taxPaymentMaterialsForThePastYear = [];form.employeePaymentCertificateForThePastYear = [];form.declarationOfMajorIllegalRecords = [];form.representativeProjects = [];form.actualImplementationSituation = [];form.other = [];testDatas.value = [];
};
// 添加一行
const addRow = (whatAdd: number) => {if (whatAdd == 0) {let obj: any = {};if (testDatas.value.length == 0) {obj.index = "0";columnList.value.forEach((p: any) => {obj[p.prop] = "";});testDatas.value[0] = obj;} else {const weiyi = testDatas.value[testDatas.value.length - 1].index;columnList.value.forEach((p: any) => {obj[p.prop] = "";});obj.index = String(Number(weiyi) + 1);testDatas.value[testDatas.value.length] = obj;}}
};
//删除
const delRow = (scope: any, whatDel: number) => {const arrIndex = scope.$index; //唯一标识//将testDatas中的第arrIndex项数据删除if (whatDel == 0) {testDatas.value.splice(arrIndex, 1);}
};
const acceptParams = () => {drawerVisible.value = true;
};
defineExpose({acceptParams
});
</script><style scoped lang="scss">
:deep(.el-textarea__inner) {height: 200px;
}
:deep(.cell) {text-align: center !important;height: 45px;padding: 0;
}
.p1111 {height: 50px;line-height: 50px !important;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;padding: 0;margin: 0;text-align: center !important;
}
.tableForm {width: 700px;margin-left: 35px;margin-top: 20px;
}
.sepcial_about {width: 500px;padding-left: 40px;box-sizing: border-box;margin-bottom: 60px;position: relative;> :first-child {width: 1000px;margin-bottom: 10px;}
}
.sepcial_about .mt-4 {position: absolute;width: 40px !important;height: 30px !important;bottom: 10px;left: 800px;z-index: 999;
}
.sepcial_about :deep(.el-table) {display: block;height: 100%;
}
:deep(.el-date-editor) {width: 100% !important;height: 50px;text-align: center;
}
.form-left {padding-top: 20px;
}
:deep(.el-form-item__content) {/* margin-top: 20px; */margin-left: 40px !important;
}
:deep(.el-form-item__label) {font-size: 16px;color: black;
}
</style>

 

相关文章:

ElementUI table+dialog实现一个简单的可编辑的表格

table组件如何实现可编辑呢&#xff1f; 我的需求是把table组件那样的表格&#xff0c;实现它点击可以弹出一个框&#xff0c;然后在这个框里面输入你的东西&#xff0c;然后将他回显回去&#xff0c;当然&#xff0c;输入的有可能是时间啥的。 为什么要弹出弹层不在框上直接…...

Rust语言精讲:数据类型全解析

大家好&#xff01;我是lincyang。 今天&#xff0c;我们将深入探讨Rust语言中的数据类型&#xff0c;这是理解和掌握Rust的基础。 Rust语言数据类型概览 Rust是静态类型语言&#xff0c;所有变量类型在编译时确定。Rust的数据类型分为两类&#xff1a;标量类型和复合类型。…...

《数据结构、算法与应用C++语言描述》-代码实现散列表(线性探查与链式散列)

散列表 完整可编译运行代码&#xff1a;Github:Data-Structures-Algorithms-and-Applications/_22hash/ 定义 字典的另一种表示方法是散列&#xff08;hashing&#xff09;。它用一个散列函数&#xff08;也称哈希函数&#xff09;把字典的数对映射到一个散列表&#xff08…...

Hadoop学习笔记:运行wordcount对文件字符串进行统计案例

文/朱季谦 我最近使用四台Centos虚拟机搭建了一套分布式hadoop环境&#xff0c;简单模拟了线上上的hadoop真实分布式集群&#xff0c;主要用于业余学习大数据相关体系。 其中&#xff0c;一台服务器作为NameNode&#xff0c;一台作为Secondary NameNode&#xff0c;剩下两台当…...

python编写简单登录系统(密码混淆加密)

输入非123的数字会显示输入123选项&#xff0c;输入空格或者回车会报错&#xff0c;因为choice设置成int型先输入2个正常账户进去预防了用户名为空&#xff0c;密码为空或者小于3个&#xff0c;用户名已存在3种情况只有用户名和对应的密码都输入正确才能登录成功输入选项3退出代…...

UVA1025 城市里的间谍 A Spy in the Metro

UVA1025 城市里的间谍 A Spy in the Metro 题面翻译 题目大意 某城市地铁是一条直线&#xff0c;有 n n n&#xff08; 2 ≤ n ≤ 50 2\leq n\leq 50 2≤n≤50&#xff09;个车站&#xff0c;从左到右编号 1 … n 1\ldots n 1…n。有 M 1 M_1 M1​ 辆列车从第 1 1 1 站开…...

【科普知识】什么是步进电机?

德国百格拉公司于1973年发明了五相混合式步进电机及其驱动器&#xff0c;1993年又推出了性能更加优越的三相混合式步进电机。我国在80年代以前&#xff0c;一直是反应式步进电机占统治地位&#xff0c;混合式步进电机是80年代后期才开始发展。 步进电机是一种用电脉冲信号进行…...

AWS云服务器EC2实例实现ByConity快速部署

1. 前言 亚马逊是全球最大的在线零售商和云计算服务提供商。AWS云服务器在全球范围内都备受推崇&#xff0c;被众多业内人士誉为“云计算服务的行业标准”。在国内&#xff0c;亚马逊AWS也以其卓越的性能和服务满足了众多用户的需求&#xff0c;拥有着较高的市场份额和竞争力。…...

Docker的项目资源参考

Docker的项目资源包括以下内容&#xff1a; Docker官方网站&#xff1a;https://www.docker.com/ Docker Hub&#xff1a;https://hub.docker.com/ Docker文档&#xff1a;https://docs.docker.com/ Docker GitHub仓库&#xff1a;https://github.com/docker Docker官方博客…...

wsl-ubuntu 系统端口总被主机端口占用问题解决

wsl-ubuntu 系统端口总被主机端口占用问题解决 0. 问题描述1. 解决方法 0. 问题描述 wsl-ubuntu 子系统中的服务&#xff0c;总是启动失败&#xff0c;错误信息是端口被占用。 用一些命令查看&#xff0c;被占用的端口也没有用服务启动。 1. 解决方法 运行&#xff0c; ne…...

详解自动化之单元测试工具Junit

目录 1.注解 1.1 Test 1.2 BeforeEach 1.3 BeforeAll 1.4 AfterEach 1.5 AfterAll 2. 用例的执行顺序 通过 order() 注解来排序 3. 参数化 3.1 单参数 3.2 多参数 3.3 多参数(从第三方csv文件读取数据源) 3.4 动态参数ParameterizedTest MethodSource() 4. 测试…...

超声波雪深传感器冬季里的科技魔法

在冬季的某个清晨&#xff0c;当你打开大门&#xff0c;被厚厚的积雪覆盖的大地映入眼帘&#xff0c;你是否曾想过&#xff0c;这片雪地的深度是多少&#xff1f;它又如何影响着我们的生活和环境&#xff1f;今天&#xff0c;我们将为你揭开这个谜团&#xff0c;介绍一款神秘的…...

2023年【熔化焊接与热切割】免费试题及熔化焊接与热切割模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 熔化焊接与热切割免费试题是安全生产模拟考试一点通生成的&#xff0c;熔化焊接与热切割证模拟考试题库是根据熔化焊接与热切割最新版教材汇编出熔化焊接与热切割仿真模拟考试。2023年【熔化焊接与热切割】免费试题及…...

【数据结构】—搜索二叉树(C++实现,超详细!)

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;消えてしまいそうです—真夜中 1:15━━━━━━️&#x1f49f;──────── 4:18 &#x1f504; ◀️ ⏸ ▶️…...

机器人算法—ROS TF坐标变换

1.TF基本概念 &#xff08;1&#xff09;什么是TF&#xff1f; TF是Transformations Frames的缩写。在ROS中&#xff0c;是一个工具包&#xff0c;提供了坐标转换等方面的功能。 tf工具包&#xff0c;底层实现采用的是一种树状数据结构&#xff0c;根据时间缓冲并维护多个参考…...

路由VRRP配置例子

拓朴如下&#xff1a; 主要配置如下&#xff1a; [R1] interface GigabitEthernet0/0/0ip address 10.1.1.1 255.255.255.0 vrrp vrid 1 virtual-ip 10.1.1.254vrrp vrid 1 priority 200vrrp vrid 1 preempt-mode timer delay 20 # interface GigabitEthernet0/0/1ip address …...

OpenGL 绘制点与三角形(Qt)

文章目录 一、简介二、实现代码三、实现效果一、简介 这里对OpenGL中点与三角形相关绘制操作进行封装,方便后续点云数据与模型数据的渲染。 二、实现代码 这里我们先创建一个基类Drawable,后续的点、线、面等,均会继承该类: Drawable.h #ifndef DRAWABLE_H #define DRAWABL…...

究竟什么是阻塞与非阻塞、同步与异步

文章目录 前言阻塞与非阻塞同步与异步复杂的网络IO真正的异步IOIO分类与示例总结 前言 这几个名词在程序开发时经常听到&#xff0c;但是突然问起来各个词的含义一时间还真是说不清楚&#xff0c;貌似这几个词都是翻译过来的&#xff0c;每个人的解释都不太一样&#xff0c;我…...

Openlayer【三】—— 绘制多边形GeoJson边界绘制

1.1、绘制多边形 在绘制多边形和前面绘制线有异曲同工之妙&#xff0c;多边形本质上就是由多个点组成的线然后连接组成的面&#xff0c;这个面就是最终的结果&#xff0c;那么这里使用到的是Polygon对象&#xff0c;而传给这个对象的值也是多个坐标&#xff0c;坐标会一个个的…...

用SOLIDWORKS画个高尔夫球,看似简单的建模却大有学问

SOLIDWORKS软件提供了大量的建模功能&#xff0c;如果工程师能灵活使用这些功能&#xff0c;就可以绘制得到各式各样的模型&#xff0c;我们尝试使用SOLIDWORKS绘制高尔夫球模型&#xff0c;如下图所示。 为什么选用solid works进行建模&#xff1f; solid works是一款功能强大…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...