diff --git a/elastic/templates/elastic/manage.html b/elastic/templates/elastic/manage.html
index a0298e5..1107c03 100644
--- a/elastic/templates/elastic/manage.html
+++ b/elastic/templates/elastic/manage.html
@@ -16,8 +16,10 @@
table{width:100%;border-collapse:collapse;margin-top:20px}
th,td{border-bottom:1px solid #eee;padding:12px 8px;text-align:left;vertical-align:top}
th{background:#f8f9fa;font-weight:600}
- .inner-table { width: 100%; margin: 0; border: 1px solid #e0e0e0; border-collapse: collapse; }
- .inner-table th, .inner-table td { border: 1px solid #e0e0e0; padding: 6px; font-size: 12px; }
+ .inner-table { width: 100%; margin: 0; border: 1px solid #e0e0e0; border-collapse: collapse; table-layout: fixed; }
+ .inner-table th, .inner-table td { border: 1px solid #e0e0e0; padding: 8px; font-size: 13px; word-break: break-all; }
+ .inner-table td:first-child { width: 30%; background-color: #f8fafc; font-weight: 600; color: #475569; }
+ .inner-table td:last-child { width: 70%; background-color: #fff; }
.inner-table th { background-color: #f9f9f9; }
img{max-width:120px;border:1px solid #eee;border-radius:6px;cursor:pointer}
.btn{padding:6px 10px;border:none;border-radius:6px;cursor:pointer;font-size:14px;margin:2px}
@@ -320,27 +322,37 @@ function renderTable(data) {
// 解析data字段,如果是JSON字符串则格式化显示
let displayData = item.data || '';
+ let parsed = null;
try {
- const parsed = JSON.parse(item.data);
- displayData = `
-
-
- ${Object.entries(parsed).map(([key, value]) => `
-
- | ${escapeHtml(key)} |
- ${escapeHtml(typeof value === 'object' ? JSON.stringify(value, null, 2) : value)} |
-
- `).join('')}
-
-
- `;
+ if (typeof displayData === 'object' && displayData !== null) {
+ parsed = displayData;
+ } else if (typeof displayData === 'string') {
+ parsed = JSON.parse(displayData);
+ }
+
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
+ displayData = `
+
+
+ ${Object.entries(parsed).map(([key, value]) => `
+
+ | ${escapeHtml(key)} |
+ ${escapeHtml(typeof value === 'object' ? JSON.stringify(value, null, 2) : value)} |
+
+ `).join('')}
+
+
+ `;
+ } else {
+ throw new Error('Not a valid JSON object');
+ }
} catch (e) {
displayData = `
| 原始数据 |
- ${escapeHtml(displayData)} |
+ ${escapeHtml(typeof displayData === 'object' ? JSON.stringify(displayData) : displayData)} |
@@ -423,16 +435,24 @@ function createRow(k = '', v = '') {
}
function renderForm(obj){
- kvForm.innerHTML='';
+ kvForm.innerHTML=`
+
+ `;
Object.keys(obj||{}).forEach(k=> kvForm.appendChild(createRow(k, obj[k])));
- if (!kvForm.children.length) kvForm.appendChild(createRow());
+ if (kvForm.querySelectorAll('div[style*="grid"]').length <= 1) kvForm.appendChild(createRow());
syncTextarea();
}
function formToObject(){
const o={};
- Array.from(kvForm.children).forEach(row=>{
+ Array.from(kvForm.children).forEach((row, index)=>{
+ if (index === 0) return; // 跳过表头
const [kI,vI] = row.querySelectorAll('input');
+ if (!kI || !vI) return;
const k=(kI.value||'').trim(); if(!k) return;
const raw=vI.value;
try{
diff --git a/elastic/templates/elastic/upload.html b/elastic/templates/elastic/upload.html
index c7539df..e6dabf3 100644
--- a/elastic/templates/elastic/upload.html
+++ b/elastic/templates/elastic/upload.html
@@ -49,9 +49,10 @@
.result-box {flex: 1;}
.result-box h3 { margin-top: 0; color: #334155;}
.form-controls { display: flex;gap: 8px;margin-bottom: 12px;flex-wrap: wrap;}
- #kvForm {border: 1px solid #e2e8f0; border-radius: 8px; padding: 12px; max-height: 300px; overflow: auto;margin-bottom: 12px;background: white;}
- .form-row {display: grid;grid-template-columns: 1fr 1fr auto;gap: 8px; margin-bottom: 6px; }
- .form-row input {padding: 8px;border: 1px solid #cbd5e1;border-radius: 4px;}
+ #kvForm {border: 1px solid #e2e8f0; border-radius: 8px; padding: 12px; max-height: 400px; overflow: auto;margin-bottom: 12px;background: #f8fafc;}
+ .form-header { display: grid; grid-template-columns: 1fr 1fr auto; gap: 8px; margin-bottom: 8px; padding: 0 4px; font-weight: 600; color: #475569; font-size: 14px;}
+ .form-row {display: grid;grid-template-columns: 1fr 1fr auto;gap: 8px; margin-bottom: 6px; align-items: center;}
+ .form-row input {padding: 8px;border: 1px solid #cbd5e1;border-radius: 4px; width: 100%; box-sizing: border-box;}
#resultBox { width: 100%;min-height: 200px;font-family: ui-monospace, SFMono-Regular, Menlo, monospace;font-size: 14px; padding: 12px; border: 1px solid #e2e8f0;
border-radius: 8px; resize: vertical;box-sizing: border-box; }
.status-message { padding: 10px; margin: 10px 0; border-radius: 6px; display: none; }
@@ -83,17 +84,17 @@
-
上传图片
-
点击下方按钮选择图片,或拖拽图片到此区域
+
上传文件
+
点击下方按钮选择图片或PDF文件,或拖拽文件到此区域