vue2 antd 开关和首页门户样式,表格合计

1.首页门户样式

如图

1.关于圆圈颜色随机设置

  <a-col :span="6" v-for="(item, index) in menuList" :key="index"><divclass="circle":style="{ borderColor: randomBorderColor() }"@click="toMeRouter(item)"><span>{{ item.menuName }}</span></div></a-col>
 //随机一个边框颜色randomBorderColor() {const randomColor = () => Math.floor(Math.random() * 256).toString(16);return "#" + randomColor() + randomColor() + randomColor();},

2.关于规章制度长度和省略号总结

 <div class="rule"><div v-if="rulers.length > 0"><table style="width: 100%"><tbody><tr v-for="(item, index) in rulers" :key="index"><td @click="detail(item)"><div class="content"><div class="desContent"><span:class="{hiddenOverflow: isIncidentDescribeLong(item.detail),}"><a-tag color="pink" v-if="index == 0">更新</a-tag> {{ extractTextFromHTML(item.detail) }}</span></div><div class="time">{{ formattedUpdateTime(item) }}</div></div></td></tr></tbody></table></div><div v-else style="text-align: center">暂无数据</div></div>

判断是否满足隐藏条件 

   isIncidentDescribeLong(data) {if (!data) return;return data.length > 45;},

隐藏的样式

.hiddenOverflow {font-size: 14px;text-indent: 2em;display: -webkit-box;overflow: hidden;text-overflow: ellipsis;-webkit-line-clamp: 3; /* 限制显示3行 */-webkit-box-orient: vertical; /* 设置为垂直方向 */
}

父级盒子 

重点p不是自己生成的 可以::v-deep   找了非常久 不知道怎么处理语法

.desContent {display: inline-block;width: 360px;font-size: 14px;::v-deep p {//p不是自己生成的margin-bottom: 0px !important;}&:hover {text-decoration: underline;}
}

还有一个就是希望每层都有距离

td {padding-bottom: 15px;cursor: pointer;
}

还有一个非常重要 就是我这个功能是通过接口的当我复制黏贴的时候 会有p标签和span标签 v-html不能去除这些标准的标签

extractTextFromHTML(html) {//JavaScript的DOM解析功能const parser = new DOMParser();const doc = parser.parseFromString(html, "text/html");return doc.body.textContent || "";},

3.关于表格合计

如图

 表头

   columns: [{title: "序号",align: "center",width: 70,customRender: (text, record, index) => {if (record.isTotalRow) {return {children: "合计",attrs: { colSpan: 6 },};}return index + 1;},width: 70,align: "center",},{title: "企业名称(租赁合同中的甲方)",align: "center",dataIndex: "companyName",width: 150,customRender: (text, record) => {if (record.isTotalRow) {return {children: null,attrs: { colSpan: 0 },};}return text;},},{title: "资产名称",align: "center",dataIndex: "assetName",width: 150,customRender: (text, record) => {if (record.isTotalRow) {return {children: null,attrs: { colSpan: 0 },};}return text;},},{title: "详细地址",align: "center",dataIndex: "address",width: 150,customRender: (text, record) => {if (record.isTotalRow) {return {children: null,attrs: { colSpan: 0 },};}return text;},},{title: "产权所属单位(产权人)",align: "center",dataIndex: "propertyOrgName",width: 150,customRender: (text, record) => {if (record.isTotalRow) {return {children: null,attrs: { colSpan: 0 },};}return text;},},{title: "资产类型",align: "center",dataIndex: "assetType",width: 150,customRender: (text, record) => {if (record.isTotalRow) {return {children: null,attrs: { colSpan: 0 },};}switch (Number.parseInt(text)) {case 1:return "房屋";case 2:return "土地";case 3:return "场地";case 4:return "设备";}},},{title: "租赁面积(m²)",align: "center",dataIndex: "rentAreas",width: 150,},{title: "承租方(租赁合同中的乙方)",align: "center",dataIndex: "receiveOrgName",width: 150,},{title: "租赁用途",align: "center",dataIndex: "rentUse",width: 150,},{title: "最终行为批准单位",align: "center",dataIndex: "finalOrgName",width: 150,customRender: (text) => {switch (Number.parseInt(text)) {case 1:return "市政府";case 2:return "左海集团";case 3:return "二级企业";}},},{title: "招租方式",align: "center",dataIndex: "rentWay",width: 150,customRender: (text) => {switch (Number.parseInt(text)) {case 1:return "平台竞租";case 2:return "协议租赁";case 3:return "自主招租";}},},{title: "招租结果是否进入平台公示",align: "center",dataIndex: "noticeFlag",width: 150,customRender: (text) => {if (text == "1") {return "是";} else {return "否";}},},{title: "租赁合同起止时间(X年x月x日-x年x月x日)",align: "center",dataIndex: "rentStartEndDate",width: 150,},{title: "租赁期数(月)",align: "center",dataIndex: "rentMonths",width: 150,},{title: "免租期(月)",align: "center",dataIndex: "rentFreeMonths",width: 150,},{title: "租金底价(元/月·m²)",align: "center",dataIndex: "rentMinPrice",width: 150,},{title: "租金成交价(元/月·m²)",align: "center",dataIndex: "rentDealPrice",width: 150,},{title: "租金递增率",align: "center",dataIndex: "rentIncreasePercent",width: 150,},{title: "合同总金额(万元)",align: "center",dataIndex: "allContractMoney",width: 150,},{title: "月租金(万元)",align: "center",dataIndex: "monthRentMoney",width: 150,},{title: "本年应收租金(万元)",align: "center",dataIndex: "yearRentShouldMoney",width: 150,},{title: "本年实收租金(万元)",align: "center",dataIndex: "yearRentRealMoney",width: 150,},{title: "是否欠租",align: "center",dataIndex: "arrearsFlag",width: 150,customRender: (text) => {if (text == "1") {return "是";} else {return "否";}},},{title: "其他违约情况",align: "center",dataIndex: "otherDefault",width: 150,},{title: "备注",align: "center",dataIndex: "remark",width: 150,},],

最后一行的数据可以这样添加

    assetRentDetailAllCount() {this.loading = true;const meta = { companyName: this.queryParam.companyName };// console.log("this.queryParam", this.queryParam);assetRentDetailAllCount(meta).then((res) => {this.loading = false;if (res.code == 0) {console.log("res", res);this.dataSource = res.data.list;// console.log(" this.dataSource", this.dataSource);// 使用解构赋值简化对象创建过程const totalRow = {isTotalRow: true,rentAreas: res.data.rentAreas,receiveOrgName: res.data.receiveOrgName,rentUse: res.data.rentUse,finalOrgName: res.data.finalOrgName,rentWay: res.data.rentWay,noticeFlag: res.data.noticeFlag,rentStartEndDate: res.data.rentStartEndDate,rentMonths: res.data.rentMonths,rentFreeMonths: res.data.rentFreeMonths,rentMinPrice: res.data.rentMinPrice,rentDealPrice: res.data.rentDealPrice,rentIncreasePercent: res.data.rentIncreasePercent,allContractMoney: res.data.allContractMoney.toFixed(2),monthRentMoney: res.data.monthRentMoney,yearRentShouldMoney: res.data.yearRentShouldMoney.toFixed(2),yearRentRealMoney: res.data.yearRentRealMoney,arrearsFlag: res.data.arrearsFlag,otherDefault: res.data.otherDefault,remark: res.data.remark,};this.dataSource.push(totalRow);// console.log(" this.dataSource22", this.dataSource);}}).catch((error) => {this.loading = false;console.error("Error fetching data:", error);});},

4.关于文件下载表格  后端不提供模板 首行缩进是Indent,合计也在下方

npm i docx
npm i file-saver
import {Document,Packer,Paragraph,TextRun,Table,TableRow,TableCell,WidthType,AlignmentType,HeadingLevel,Indent,
} from "docx";
import { saveAs } from "file-saver";
 <a-buttontype="primary"@click="generateDocx":disabled="this.selectionRows.length > 0 ? false : true">下载缴费单</a-button>
  generateDocx() {let totalShouldPayMoney = this.dataSource2.reduce((sum, item) => sum + (item.shouludPayMoney || 0),0);const doc = new Document({sections: [{children: [new Paragraph({children: [new TextRun({text: "缴费通知单",heading: HeadingLevel.TITLE,bold: true,size: 32,}),],alignment: AlignmentType.CENTER,}),new Paragraph({children: [new TextRun({text: `尊敬的承租户:${this.downform.lesseeOrg}`,heading: HeadingLevel.HEADING_1,bold: true,size: 24,}),],}),new Paragraph({children: [new TextRun({text: `本公司特函通知,以下是${this.downform.startDate}至${this.downform.endDate} 费用使用详单。您租赁的项目按合同约定应缴纳以下费用,敬请贵司在收到本通知书单日内将下述款项以银行转账进行缴纳。`,size: 18,}),],indent: { firstLine: 480 }, // 设置首行缩进}),new Table({rows: [new TableRow({children: [new TableCell({children: [new Paragraph("资产编号")],width: { size: 10, type: WidthType.PERCENTAGE },alignment: AlignmentType.CENTER,verticalAlign: AlignmentType.CENTER,}),new TableCell({children: [new Paragraph("资产名称")],width: { size: 10, type: WidthType.PERCENTAGE },alignment: AlignmentType.CENTER,verticalAlign: AlignmentType.CENTER,}),new TableCell({children: [new Paragraph("单月租金(元)")],width: { size: 10, type: WidthType.PERCENTAGE },alignment: AlignmentType.CENTER,verticalAlign: AlignmentType.CENTER,}),new TableCell({children: [new Paragraph("数量")],width: { size: 10, type: WidthType.PERCENTAGE },alignment: AlignmentType.CENTER,verticalAlign: AlignmentType.CENTER,}),new TableCell({children: [new Paragraph("应付金额")],width: { size: 10, type: WidthType.PERCENTAGE },alignment: AlignmentType.CENTER,verticalAlign: AlignmentType.CENTER,}),],}),...this.dataSource2.map((item) =>new TableRow({children: [new TableCell({children: [new Paragraph(item.code || "")],alignment: AlignmentType.CENTER,verticalAlign: AlignmentType.CENTER,}),new TableCell({children: [new Paragraph(item.name || "")],alignment: AlignmentType.CENTER,verticalAlign: AlignmentType.CENTER,}),new TableCell({children: [new Paragraph(item.monthRentMoney.toString() || ""),],alignment: AlignmentType.CENTER,verticalAlign: AlignmentType.CENTER,}),new TableCell({children: [new Paragraph(item.monthNum.toString() || ""),],alignment: AlignmentType.CENTER,verticalAlign: AlignmentType.CENTER,}),new TableCell({children: [new Paragraph(item.shouludPayMoney.toString() || ""),],alignment: AlignmentType.CENTER,verticalAlign: AlignmentType.CENTER,}),],})),// 添加合计行new TableRow({children: [new TableCell({children: [new Paragraph("合计")],columnSpan: 4, // 合并前四列alignment: AlignmentType.CENTER,verticalAlign: AlignmentType.CENTER,}),new TableCell({children: [new Paragraph(totalShouldPayMoney.toFixed(2)),],alignment: AlignmentType.CENTER,verticalAlign: AlignmentType.CENTER,shading: {color: "#EFEFEF",val: "clear",},borders: {bottom: { style: "single", size: 12 },},}),],}),],}),new Paragraph({children: [new TextRun({text: `出租方:${this.downform.rentOrgName}`,size: 18,}),],alignment: AlignmentType.RIGHT,}),new Paragraph({children: [new TextRun({text: `${this.date}`,size: 18,}),],alignment: AlignmentType.RIGHT,}),],},],});Packer.toBlob(doc).then((blob) => {saveAs(blob, "缴费单详情.docx");});},

Paragraph (docx.js.org)

docx

docx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/33715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

游戏AI的创造思路-技术基础-深度学习(1)

他来了&#xff0c;他来啦&#xff0c;后面歌词忘了~~~~~ 开谈深度学习&#xff0c;填上一点小坑&#xff0c;可又再次开掘大洞 -.-b 目录 1. 定义 2. 深度学习的发展历史和典型事件 3. 深度学习常用算法 3.1. 卷积神经网络&#xff08;CNN&#xff09; 3.1.1. 算法形成过…

Redis-主从复制的准备工作-准备三台redis服务器

文章目录 1、新建三个redis配置文件&#xff0c;用于定义每个服务的专属配置1.1、复制文件redis.conf到redis安装目录下1.2、关闭redis_common.conf中的 aof 功能1.1.1、新建 redis_6379.conf1.1.2、新建 redis_6380.conf1.1.3、新建 redis_6381.conf 2、启动三个服务器2.1、后…

Electron运行报错

安装&#xff1a; npm install --save-dev electron 1&#xff1a;报错&#xff1a; electron Unable to find Electron app at 2&#xff1a; ReferenceError: require is not defined in ES module scope, you can use importinstead 在ES模块作用域中没有定义ReferenceErr…

Python重拾

1.Python标识符规则 字母&#xff0c;下划线&#xff0c;数字&#xff1b;数字不开头&#xff1b;大小写区分&#xff1b;不能用保留字&#xff08;关键字&#xff09; 2.保留字有哪些 import keyword print(keyword.kwlist)[False, None, True, and,as, assert, async, await…

2023 联邦推荐系统综述

本博客结合2023年发表的综述文章&#xff0c;对近期一些联邦推荐文章进行总结&#xff0c;综述原文&#xff1a; SUN Z, XU Y, LIU Y, et al. A Survey on Federated Recommendation Systems[J]. 2023.https://doi.org/10.48550/arXiv.2301.00767 引言 最近&#xff0c;已有许多…

【linux网络(六)】IP协议详解

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux网络 1. 前言2. IP协议报…

链家房屋数据爬取与预处理-大数据采集与预处理课程设计

芜湖市链家二手房可视化平台 成品展示 重点说明 1.数据特征数量和名称、数据量 数据特征数量&#xff1a;14&#xff1b; 名称&#xff1a;小区名、价格/万、地区、房屋户型、所在楼层、建筑面积/平方米、户型结构、套内面积、建筑类型、房屋朝向、建筑结构、装修情况、梯户…

(上位机APP开发)调用华为云命令API接口给设备下发命令

一、功能说明 通过调用华为云IOT提供的命令下发API接口,实现下面界面上相同的功能。调用API接口给设备下发命令。 二、JavaScript代码 function sendUnlockCommand() {var requestUrl = "https://9bcf4cfd30.st1.iotda-app.cn-north-4.myhuaweicloud.com:443/v5/iot/60…

Springboot 整合 DolphinScheduler(一):初识海豚调度

目录 一、什么是 DolphinScheduler 二、DolphinScheduler 的特性 三、DolphinScheduler 核心架构 四、单机环境部署流程 1、下载安装包 2、上传至服务器&#xff0c;解压缩 3、单机启动 4、登录 dolphinscheduler UI 5、配置数据库【非必需】 &#xff08;1&#xff…

前端:Nuxt3 + Vuetify3 + Element Plus + 添加常用插件

想要开发一个网站&#xff0c;并且支持SEO搜索&#xff0c;当然离不开我们的 Nuxt &#xff0c;那通过本篇文章让我们一起了解一下。让我们一起来构建下 Nuxt3 集成其它插件 目录 安装 Nuxt3&#xff0c;创建项目 一、搭建脚手架 二、添加 Vuetify 3 2.1、安装 Vuetify 3 …

如何将一个web端程序打包成一个pc端程序(exe文件)?

如何将一个Web端程序打包成一个PC端程序&#xff0c;例如一个可执行的EXE文件&#xff0c;是许多开发者常见的需求。下面将详细解释如何使用Nativefier工具将Web端程序打包成PC端程序的具体步骤。 目录 下载并安装Node.js验证Node.js和npm的安装安装Nativefier使用Nativefier打…

革新校园环境:轻空间打造上海六十中学多功能气膜馆

在现代教育环境中&#xff0c;舒适、环保和多功能的建筑越来越受到重视。上海六十中学多功能气膜馆的建设正如火如荼地进行中&#xff0c;这个项目由轻空间&#xff08;江苏&#xff09;膜科技有限公司全力打造&#xff0c;将为学校师生带来全新的活动体验。 项目进展 自项目启…

量子计算的崛起:开启计算新纪元

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

基于SpringBoot小区物业智能卡管理设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…

MySQL 外连接、内连接与自连接的区别?

引言&#xff1a;本文将深入探讨这些连接类型的概念、语法及其应用场景&#xff0c;帮助读者全面理解如何利用这些技术实现复杂的数据查询和分析。在数据库查询中&#xff0c;连接操作使得我们可以根据指定的关联条件&#xff08;join condition&#xff09;联合两个或多个表中…

昇思25天学习打卡Day01

实验结果 心得体会 趁着假期&#xff0c;跟谁官方实战营开始系统学习MindSpore深度学习框架。昇思MindSpore是一个全场景深度学习框架&#xff0c;旨在实现易开发、高效执行、全场景统一部署三大目标。其中易开发表现为API友好&#xff0c;调试难度低&#xff1b;高效执行包括…

C语言常用标准头文件

头文件的基础概念 在C的系列语言程序中&#xff0c;头文件&#xff08;通常扩展名为.h&#xff09;被大量使用&#xff0c;它通常包含函数、变量、结构体等的声明和定义&#xff0c;以及一些宏定义和类型定义。头文件的主要作用是为了方便管理和重用代码&#xff0c;它可以被多…

c++分隔字符串

可以使用getline函数。 有两个版本&#xff1a; 至于为什么可以使用getline函数返回值作为while的判断条件&#xff0c;cprimer中表述如下&#xff1a;

【话题】分数限制下,选好专业还是选好学校?

目录 引言&#xff1a;一、专业优先的考量二、学校优先的考量三、个人经历与决策四、综合考虑因素五、建议与策略结论文章推荐 引言&#xff1a; 随着24年高考的落幕&#xff0c;考生们迎来了人生中的重要抉择时刻&#xff1a;选择专业还是选择学校&#xff1f;两者皆重要&…

PS系统教程25

介绍软件 BR&#xff08;bridge&#xff09; PS 配套软件&#xff0c;方便素材整理、管理素材 作用&#xff1a;起到桥梁作用 注意&#xff1a;PS和BR尽量保持版本一致 下载和安装可通过CSDN社区搜索&#xff0c;有免费安装指导。 安装之后&#xff0c;我们打开照片只需双…