橘猫敲代码 2024-12-16 16:57 采纳率: 64.1%
浏览 7
已结题

vue elementui查询记录展示

img


这种查询记录用哪种组件展示合适,一时没想到,类似树组件,但是又不是

  • 写回答

3条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2024-12-16 17:03
    关注
    让【道友老李】来帮你解答,本回答参考通义千问qwen-plus编写,并整理提供,如果还有疑问可以点击头像关注,评论或留言
    根据您提供的图片和描述,这种查询记录展示的需求确实类似于树形结构,但又不完全符合传统的树组件。这里推荐使用**可展开表格(Expandable Table)**来展示这类数据。

    为什么选择可展开表格?

    1. 层次结构清晰:可以清晰地展示不同层级的数据关系。
    2. 灵活性高:可以在每一行中嵌入更多的信息,如图标、按钮等。
    3. 用户体验好:用户可以通过点击行来展开或收起子记录,操作直观。

    示例

    假设我们有一个查询记录表,其中每个查询可能包含多个子记录。我们可以使用一个可展开表格来展示这些数据。

    数据结构示例

    [
      {
        "id": 1,
        "query": "查询1",
        "children": [
          {
            "id": 11,
            "subQuery": "子查询1"
          },
          {
            "id": 12,
            "subQuery": "子查询2"
          }
        ]
      },
      {
        "id": 2,
        "query": "查询2",
        "children": [
          {
            "id": 21,
            "subQuery": "子查询1"
          }
        ]
      }
    ]
    

    HTML + JavaScript 示例

    这里使用HTML和JavaScript来实现一个简单的可展开表格。

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Expandable Table</title>
      <style>
        table {
          width: 100%;
          border-collapse: collapse;
        }
        th, td {
          border: 1px solid #ddd;
          padding: 8px;
        }
        th {
          background-color: #f2f2f2;
          text-align: left;
        }
        .expandable {
          cursor: pointer;
        }
        .hidden {
          display: none;
        }
      </style>
    </head>
    <body>
      <table id="queryTable">
        <thead>
          <tr>
            <th>查询</th>
            <th>子查询</th>
          </tr>
        </thead>
        <tbody>
        </tbody>
      </table>
    
      <script>
        const data = [
          {
            id: 1,
            query: "查询1",
            children: [
              { id: 11, subQuery: "子查询1" },
              { id: 12, subQuery: "子查询2" }
            ]
          },
          {
            id: 2,
            query: "查询2",
            children: [
              { id: 21, subQuery: "子查询1" }
            ]
          }
        ];
    
        function renderTable(data) {
          const tbody = document.getElementById('queryTable').getElementsByTagName('tbody')[0];
          tbody.innerHTML = '';
    
          data.forEach(item => {
            const row = document.createElement('tr');
            row.className = 'expandable';
            row.dataset.id = item.id;
            row.innerHTML = `
              <td>${item.query}</td>
              <td></td>
            `;
            tbody.appendChild(row);
    
            const childRow = document.createElement('tr');
            childRow.className = 'hidden';
            childRow.dataset.parentId = item.id;
            childRow.innerHTML = `
              <td></td>
              <td>
                <ul>
                  ${item.children.map(child => `<li>${child.subQuery}</li>`).join('')}
                </ul>
              </td>
            `;
            tbody.appendChild(childRow);
          });
    
          document.querySelectorAll('.expandable').forEach(row => {
            row.addEventListener('click', () => {
              const parentId = row.dataset.id;
              const childRow = document.querySelector(`[data-parent-id="${parentId}"]`);
              childRow.classList.toggle('hidden');
            });
          });
        }
    
        renderTable(data);
      </script>
    </body>
    </html>
    

    解释

    1. HTML部分

      • 创建了一个表格,包含表头和一个空的<tbody>
      • 表格的样式通过CSS进行简单的美化。
    2. JavaScript部分

      • 定义了数据结构data,包含查询和子查询。
      • renderTable函数用于渲染表格,将数据转换为HTML元素并插入到表格中。
      • 每个查询行被赋予expandable类,并添加了一个点击事件监听器。
      • 点击查询行时,会切换对应的子查询行的显示状态(通过hidden类控制)。

    总结

    使用可展开表格可以很好地展示具有层次结构的查询记录,既保持了数据的清晰性,又提供了良好的用户体验。希望这个示例对您有所帮助!如果有任何问题或需要进一步的帮助,请随时告诉我。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月7日
  • 创建了问题 12月16日