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

vue.js 展示树状结构数据,动态生成 HTML 内容

  1. 展示树状结构数据

    • 从 jsonData 读取树状结构的 JSON 数据,将其解析并生成 HTML 列表来展示。
    • 树状结构数据根据 id 和 label 属性组织,节点可以包含子节点 children
  2. 展示评级信息

    • 从预定义的表单字段 form 中读取 arRateFlag 和 arGameId,将它们转换为对应的标签和游戏名称,并在页面上展示。
  3. 动态生成 HTML 内容

    • 在组件创建时 (created 钩子),根据 jsonData 的内容,动态生成展示树状数据和评级信息的 HTML 字符串,并插入到页面中。

具体功能步骤

  1. 数据初始化

    • 定义树状结构数据 jsonData 及其对应的空数组 nodes
    • 定义评级类型选项 rateFlagOptions 和游戏 ID 选项 normalRateGameIdOptions
    • 定义表单数据 form,包含多个 arRateFlag 和 arGameId
  2. 组件创建时

    • 如果 jsonData 不为空,则解析 JSON 数据并调用 generateTreeHtml 和 generateRateHtml 方法生成 HTML 内容。
    • 如果 jsonData 为空,只生成评级信息。
  3. 方法说明

    • generateTreeHtml(nodes): 递归地生成树状结构的 HTML 列表,展示节点标签及其子节点。
    • generateRateHtml(): 根据表单数据生成评级类型和游戏 ID 对应的 HTML 内容。
    • getRateFlagLabel(value): 根据提供的评级标志值,获取对应的标签文本。
    • getGameName(gameId): 根据提供的游戏 ID,获取对应的游戏名称。
<template><div v-html="treeHtmlContent"></div>
</template><script>
export default {data() {return {jsonData: `[{"id": 547,"label": "up内容质量","business_type": 0,"children": [{"id": 561,"label": "孙子兵法设置","business_type": 0,"children": [{"id": 567,"label": "修改孙子兵法","业务类型": 0},{"id": 569,"label": "删除孙子兵法","业务类型": 0}]},{"id": 571,"label": "聚集舞会明细","业务类型": 0,"children": [{"id": 607,"label": "分页获取违规明细","业务类型": 0}]},{"id": 647,"label": "检测类型管理","业务类型": 0,"children": [{"id": 649,"label": "分页获取检测类型管理","业务类型": 0},{"id": 651,"label": "创建检测类型管理","业务类型": 0},{"id": 653,"label": "修改检测类型管理","业务类型": 0},{"id": 655,"label": "删除检测类型管理","业务类型": 0}]}]},{"id": 575,"label": "up评级后台","业务类型": 0,"children": [{"id": 577,"label": "up评级","业务类型": 0,"children": [{"id": 695,"label": "导入评级","业务类型": 0},{"id": 697,"label": "评级打分","业务类型": 0}]},{"id": 583,"label": "评分规则设置","业务类型": 0,"children": [{"id": 587,"label": "创建评分规则设置","业务类型": 0}]}]}]`,nodes: [],treeHtmlContent: '',rateFlagOptions: [{label: '娱乐/游戏新up评级', value: 0},{label: '高潜up专项', value: 1}],normalRateGameIdOptions: [{id: 4,rateFlag: 0,gameId: '2633',gameName: '二次元',anchorType: '["舞见coser","治愈哄睡","虚拟up","露脸唱见","电台声优"]',updateName: 'zhouhao',createdAt: '2024-02-04T00:04:00+08:00',updatedAt: '2024-02-04T04:00:00+08:00',createBy: 1,updateBy: 1},{id: 3,rateFlag: 0,gameId: '2165',gameName: '户外',anchorType: '["城市","乡野","美食","徒步","厨娘","瑜伽","其它"]',updateName: 'zhouhao',createdAt: '2024-02-04T00:03:00+08:00',updatedAt: '2024-02-04T03:00:00+08:00',createBy: 1,updateBy: 1},{id: 2,rateFlag: 0,gameId: '2168',gameName: '颜值',anchorType: '["音乐","舞蹈","脱口秀"]',updateName: 'zhouhao',createdAt: '2024-02-04T00:02:00+08:00',updatedAt: '2024-02-04T02:00:00+08:00',createBy: 1,updateBy: 1},{id: 1,rateFlag: 0,gameId: '1663',gameName: '星秀',anchorType: '["舞蹈","好声音","脱口秀","女团"]',updateName: 'zhouhao',createdAt: '2024-02-04T00:01:00+08:00',updatedAt: '2024-02-04T01:00:00+08:00',createBy: 1,updateBy: 1}],form: {arRateFlag: '0,1',arGameId: '2633,2165,2168,1663'}};},created() {let content;if (this.jsonData === '') {content = this.generateRateHtml();} else {this.nodes = JSON.parse(this.jsonData);content = this.generateTreeHtml(this.nodes) + this.generateRateHtml();}this.treeHtmlContent = `<div style="max-height: 500px; overflow-y: auto;">${content}</div>`;},methods: {generateTreeHtml(nodes) {if (!nodes || nodes.length === 0) return '';let html = '<ul style="list-style: disc; padding-left: 0; text-align: left;">';for (let node of nodes) {html += `<li style="font-size: 14px; line-height: 1em; text-align: left; margin-left: 20px;margin-top:8px">${node.label}`;if (node.children && node.children.length > 0) {html += this.generateTreeHtml(node.children);}html += '</li>';}html += '</ul>';return html;},generateRateHtml() {let rateFlags = '';if (this.form.arRateFlag) {rateFlags = this.form.arRateFlag.split(',').map(flag => this.getRateFlagLabel(flag)).join('、');}let gameNames = '';if (this.form.arGameId) {gameNames = this.form.arGameId.split(',').map(id => this.getGameName(id)).join('、');}let html = '<div style="text-align: left; margin-left: 20px; font-size: 14px;">';if (rateFlags) {html += `<div>评级类型:${rateFlags}</div>`;}if (gameNames) {html += `<div>娱乐/游戏评级的评级品类:${gameNames}</div>`;}html += '</div>';return html;},getRateFlagLabel(value) {const option = this.rateFlagOptions.find(opt => opt.value == value);return option ? option.label : '';},getGameName(gameId) {const option = this.normalRateGameIdOptions.find(opt => opt.gameId == gameId);return option ? option.gameName : '';}}
};
</script>

主要功能

  • 数据定义 (data):

    • jsonData: 包含树状结构的 JSON 数据,预先定义好。
    • nodes: 解析后的树节点数组。
    • treeHtmlContent: 用于展示树结构及评级信息的 HTML 字符串。
    • rateFlagOptions 和 normalRateGameIdOptions: 用于存储评级和游戏标志选项。
    • form: 包含表单的评级标志和游戏 ID。
  • created生命周期钩子:

    • 在组件创建时,检查 jsonData 是否为空。
    • 解析 jsonData 并生成树状 HTML 结构,添加评级 HTML。
    • 设置 treeHtmlContent,包裹在一个带滚动条的 div 内。
  • 方法:

    • generateTreeHtml(nodes): 递归地生成树状结构 HTML 字符串。
    • generateRateHtml(): 生成评级 HTML 字符串,包含评级类型和游戏名称。
    • getRateFlagLabel(value): 根据 rateFlag 值查找并返回对应的标签。
    • getGameName(gameId): 根据 gameId 查找并返回对应的游戏名称。
 created() {let content;// 如果 jsonData 为空,则生成默认的评级HTMLif (this.jsonData === '') {content = this.generateRateHtml();} else {// 将 jsonData 解析为 nodesthis.nodes = JSON.parse(this.jsonData);// 生成树状结构的HTML并附加到评级HTMLcontent = this.generateTreeHtml(this.nodes) + this.generateRateHtml();}// 将内容包裹在一个带有滚动条的 div 内并赋值给 treeHtmlContentthis.treeHtmlContent = `<div style="max-height: 500px; overflow-y: auto;">${content}</div>`;},methods: {// 生成树状结构HTML的方法generateTreeHtml(nodes) {if (!nodes || nodes.length === 0) return '';let html = '<ul style="list-style: disc; padding-left: 0; text-align: left;">';for (let node of nodes) {html += `<li style="font-size: 14px; line-height: 1em; text-align: left; margin-left: 20px;margin-top:8px">${node.label}`;if (node.children && node.children.length > 0) {html += this.generateTreeHtml(node.children);}html += '</li>';}html += '</ul>';return html;},// 生成评级HTML的方法generateRateHtml() {let rateFlags = '';if (this.form.arRateFlag) {rateFlags = this.form.arRateFlag.split(',').map(flag => this.getRateFlagLabel(flag)).join('、');}let gameNames = '';if (this.form.arGameId) {gameNames = this.form.arGameId.split(',').map(id => this.getGameName(id)).join('、');}let html = '<div style="text-align: left; margin-left: 20px; font-size: 14px;">';if (rateFlags) {html += `<div>评级类型:${rateFlags}</div>`;}if (gameNames) {html += `<div>娱乐/游戏评级的评级品类:${gameNames}</div>`;}html += '</div>';return html;},// 根据 value 获取评级标志的标签getRateFlagLabel(value) {const option = this.rateFlagOptions.find(opt => opt.value == value);return option ? option.label : '';},// 根据 gameId 获取游戏名称getGameName(gameId) {const option = this.normalRateGameIdOptions.find(opt => opt.gameId == gameId);return option ? option.gameName : '';}}

相关文章:

vue.js 展示树状结构数据,动态生成 HTML 内容

展示树状结构数据&#xff1a; 从 jsonData 读取树状结构的 JSON 数据&#xff0c;将其解析并生成 HTML 列表来展示。树状结构数据根据 id 和 label 属性组织&#xff0c;节点可以包含子节点 children。 展示评级信息&#xff1a; 从预定义的表单字段 form 中读取 arRateFlag 和…...

科技赋能安全,财谷通助力抖音小店腾飞!

在数字经济的浪潮中&#xff0c;短视频与直播带货已成为新时代的商业风口&#xff0c;抖音小店作为这一领域的佼佼者&#xff0c;正引领着无数小微商家踏上创业与转型的快车道。然而&#xff0c;随着市场的日益繁荣&#xff0c;如何有效管理店铺、提升运营效率、保障交易安全成…...

Redis安装教程

Redis安装详细教程 &#x1f4d6;1.单机安装Redis✅安装Redis依赖✅上传安装包并解压✅启动&#x1f9ca;默认启动&#x1f9ca;指定配置启动&#x1f9ca;开机自启 &#x1f4d6;2.Redis客户端✅Redis命令行客户端✅图形化桌面客户端&#x1f9ca;安装&#x1f9ca;建立连接 大…...

Idea集成docker实现镜像打包一键部署

1.Docker开启远程访问 #修改该Docker服务文件 vi /lib/systemd/system/docker.service#修改ExecStart这行 ExecStart/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock将文件内的 ExecStart注释。 新增如上行。 ExecStart/usr/bin/dockerd -H fd:/…...

spring 注解 - @NotNull - 确保字段或参数值不为 null

NotNull 是 Bean Validation API&#xff08;JSR 303/JSR 349&#xff09;中的一个注解&#xff0c;用于确保一个字段或参数值不为 null。这个注解可以用于 Java 类的字段、方法的参数或者方法的返回值上&#xff0c;以确保在运行时这些值不为空。 使用场景 字段验证&#xf…...

408算法题leetcode--第13天

61. 旋转链表 61. 旋转链表思路&#xff1a;注释时间&#xff1a;O(n)&#xff1b;空间&#xff1a;O(1) /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x…...

【MySQL】表的基本查询

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 创建Creator &#x1f4c2; 插入数据 &#x1f4c2; 插入否则更新 &#x1f4c2; 替换 &#x1f4c1; 读取Retrieve &#x1f4c2; select列 &#x1f4c2; where条件 &#x1f4c2; 结果排序 &#x1f4c2; 筛选分页结果…...

李宏毅2023机器学习HW15-Few-shot Classification

文章目录 LinkTask: Few-shot ClassificationBaselineSimple—transfer learningMedium — FO-MAMLStrong — MAML Link Kaggle Task: Few-shot Classification The Omniglot dataset background set: 30 alphabetsevaluation set: 20 alphabetsProblem setup: 5-way 1-sho…...

API安全推荐厂商瑞数信息入选IDC《中国数据安全技术发展路线图》

近日&#xff0c;全球领先的IT研究与咨询公司IDC发布报告《IDC TechScape&#xff1a;中国数据安全技术发展路线图&#xff0c;2024》。瑞数信息凭借其卓越的技术实力和广泛的行业应用&#xff0c;被IDC评选为“增量型”技术曲线API安全的推荐厂商。 IDC指出&#xff0c;数据安…...

1.5 计算机网络的性能指标

参考&#xff1a;&#x1f4d5;深入浅出计算机网络 目录 速率 带宽 吞吐量 时延 时延带宽积 往返时间 利用率 丢包率 速率 速率是指数据的传送速率&#xff08;即每秒传送多少个比特&#xff09;&#xff0c;也称为数据率&#xff08;Data Rate&#xff09;或比特率&am…...

【已解决】IDEA鼠标光标与黑块切换问题,亲测有效

前言 前两天我妹妹说她室友的idea光标变成黑块状了&#xff0c;解决不了跑来问我&#xff0c;这是刚入门开发者经常遇到的问题&#xff0c;这篇文章介绍一下这两种方式&#xff0c;方便刚入门的小伙伴儿们更清楚地了解idea&#xff0c;使用idea。 希望这篇文章能够帮助到遇到…...

记一次sql查询优化

记一次sql查询优化 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 今天测试环境发现一个问题&#xff0c;就是测试同事在测试的时候&#xff0c;发现cpu一直居高不下&#xff0c;然…...

str函数的模拟(包括strn函数的模拟)

首先先说这些函数引用的头文件是<string.h> 1.strlen函数 int my_strlen(char* s1) { //这里只用最难的方法 if (*s1) { return my_strlen(s1 1) 1; } else return 0; } 这里使用了递归的方法&#xff08;不创建新的变量&#xff0…...

畅阅读微信小程序

畅阅读微信小程序 weixin051畅阅读微信小程序ssm 摘 要 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用j…...

RHEL7(RedHat红帽)软件安装教程

目录 1、下载RHEL7镜像 2、安装RedHat7 注&#xff1a;如果以下教程不想看&#xff0c;可以远程控制安装V:OYH-Cx330 【风险告知】 本人及本篇博文不为任何人及任何行为的任何风险承担责任&#xff0c;图解仅供参考&#xff0c;请悉知&#xff01;本次安装图解是在一个全新的演…...

CC 攻击:一种特殊的 DDoS 攻击

引言 分布式拒绝服务&#xff08;Distributed Denial of Service&#xff0c;简称 DDoS&#xff09;攻击是指攻击者利用多台计算机或其他网络资源对目标发起大量请求&#xff0c;使目标服务器不堪重负&#xff0c;无法正常响应合法用户的请求。CC&#xff08;Challenge Collap…...

掌上高考爬虫逆向分析

目标网站 aHR0cHM6Ly93d3cuZ2Fva2FvLmNuL3NjaG9vbC9zZWFyY2g/cmVjb21zY2hwcm9wPSVFNSU4QyVCQiVFOCU4RCVBRg 一、抓包分析 二、逆向分析 搜索定位加密参数 本地生成代码 var CryptoJS require(crypto-js) var crypto require(crypto);f "D23ABC#56"function v(t…...

忘了SD吧,现在是Flux的时代

Stable Diffusion大量人员离职&#xff0c;不过离职后核心人员依然从事相关工作&#xff0c;Flux就是SD的原班人马创作的。 在SD3后推出不久&#xff0c;Flux横空出世。 可以说&#xff0c;优秀的Flux和付费版的MJ效果相差不大&#xff08;前提是配置足够高&#xff0c;能进行…...

服务器安装openssh9.9p1

11.81.2.19 更新 SSL 备份原有配置 1.1 查看 openssl 版本 openssl version OpenSSL 1.0.2k-fips 26 Jan 20171.2 查看 openssl 路径 whereis openssl openssl: /usr/bin/openssl /usr/lib64/openssl /usr/include/openssl /usr/share/man/man1/openssl.1ssl.gz1.3 备份 op…...

Spring Boot集成Redis Search快速入门Demo

1.什么是Redis Search&#xff1f; RedisSearch 是一个基于 Redis 的搜索引擎模块&#xff0c;它提供了全文搜索、索引和聚合功能。通过 RedisSearch&#xff0c;可以为 Redis 中的数据创建索引&#xff0c;执行复杂的搜索查询&#xff0c;并实现高级功能&#xff0c;如自动完…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

node.js的初步学习

那什么是node.js呢&#xff1f; 和JavaScript又是什么关系呢&#xff1f; node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说&#xff0c; 需要在node.js的环境上进行当JavaScript作为前端开发语言来说&#xff0c;需要在浏览器的环境上进行 Node.js 可…...

未授权访问事件频发,我们应当如何应对?

在当下&#xff0c;数据已成为企业和组织的核心资产&#xff0c;是推动业务发展、决策制定以及创新的关键驱动力。然而&#xff0c;未授权访问这一隐匿的安全威胁&#xff0c;正如同高悬的达摩克利斯之剑&#xff0c;时刻威胁着数据的安全&#xff0c;一旦触发&#xff0c;便可…...

【Java】Ajax 技术详解

文章目录 1. Filter 过滤器1.1 Filter 概述1.2 Filter 快速入门开发步骤:1.3 Filter 执行流程1.4 Filter 拦截路径配置1.5 过滤器链2. Listener 监听器2.1 Listener 概述2.2 ServletContextListener3. Ajax 技术3.1 Ajax 概述3.2 Ajax 快速入门服务端实现:客户端实现:4. Axi…...

简约商务通用宣传年终总结12套PPT模版分享

IOS风格企业宣传PPT模版&#xff0c;年终工作总结PPT模版&#xff0c;简约精致扁平化商务通用动画PPT模版&#xff0c;素雅商务PPT模版 简约商务通用宣传年终总结12套PPT模版分享:商务通用年终总结类PPT模版https://pan.quark.cn/s/ece1e252d7df...

Vue 实例的数据对象详解

Vue 实例的数据对象详解 在 Vue 中,数据对象是响应式系统的核心,也是组件状态的载体。理解数据对象的原理和使用方式是成为 Vue 专家的关键一步。我将从多个维度深入剖析 Vue 实例的数据对象。 一、数据对象的定义方式 1. Options API 中的定义 在 Options API 中,使用 …...

【向量库】Weaviate概述与架构解析

文章目录 一、什么是weaviate二、High-Level Architecture1. Core Components2. Storage Layer3. 组件交互流程 三、核心组件1. API Layer2. Schema Management3. Vector Indexing3.1. 查询原理3.2. 左侧&#xff1a;Search Process&#xff08;搜索流程&#xff09;3.3. 右侧&…...