diff --git a/app/static/index.html b/app/static/index.html index 2c27ad5..b104e83 100644 --- a/app/static/index.html +++ b/app/static/index.html @@ -297,43 +297,74 @@ .badge-info { background: #dbeafe; color: #1e40af; } .badge-gray { background: var(--gray-100); color: var(--gray-600); } - /* Symbol Grid */ - .symbol-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); - gap: 12px; + /* Symbol Table */ + .symbol-table { + width: 100%; + border-collapse: collapse; margin-top: 16px; max-height: 500px; overflow-y: auto; - padding-right: 8px; + display: block; + } + + .symbol-table thead { + position: sticky; + top: 0; + background: var(--gray-50); + z-index: 1; + } + + .symbol-table th { + padding: 12px 16px; + text-align: left; + font-weight: 600; + color: var(--gray-700); + font-size: 13px; + border-bottom: 2px solid var(--gray-200); + } + + .symbol-table td { + padding: 12px 16px; + border-bottom: 1px solid var(--gray-100); + font-size: 14px; } - .symbol-card { + .symbol-table tr:hover { background: var(--gray-50); + } + + .symbol-table .symbol-name { + font-weight: 600; + color: var(--gray-800); + } + + .symbol-table .symbol-code-input { + font-family: 'SF Mono', 'Cascadia Code', monospace; + font-size: 13px; + color: var(--primary); + padding: 6px 10px; border: 1px solid var(--gray-200); - border-radius: var(--radius); - padding: 14px; - text-align: center; + border-radius: 6px; + width: 120px; transition: all 0.2s; - position: relative; } - .symbol-card:hover { border-color: var(--primary-light); box-shadow: var(--shadow-md); } - .symbol-name { font-weight: 600; color: var(--gray-800); font-size: 14px; } - .symbol-code { font-family: 'SF Mono', 'Cascadia Code', monospace; font-size: 13px; color: var(--primary); margin-top: 4px; } - - .symbol-actions { + .symbol-table .symbol-code-input:focus { + outline: none; + border-color: var(--primary-light); + box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); + } + + .symbol-table .symbol-actions { display: flex; gap: 6px; - margin-top: 10px; - justify-content: center; } - - .symbol-actions .btn-sm { - padding: 4px 8px; + + .symbol-table .symbol-actions .btn-sm { + padding: 4px 10px; font-size: 12px; } - + .add-symbol-form { background: var(--gray-50); border: 2px dashed var(--gray-300); @@ -1451,7 +1482,7 @@ const stockCount = Object.keys(stock).length; document.getElementById('configCount').textContent = `期货 ${futuresCount} 个, 股票 ${stockCount} 个`; - const renderGrid = (items, type) => { + const renderTable = (items, type) => { let filteredItems = items; if (currentSearchTerm) { @@ -1476,20 +1507,31 @@ return text.replace(regex, '$1'); }; - return `
| 品种名称 | +合约代码 | +操作 | +
|---|