Перейти к основному содержимому
clawam tools
Инструменты Документы Daoark Главная Главная / Преобразование данных › Главная manifest.json 1 ? parts.slice(1).join(':').trim() : 'string' }); } return out; } function csvEscape(s) { return /[",\n]/.test(s) ? '"' + s.replace(/"/g, '""') + '"' : s; } var lastResult = ''; function doGen() { try { var fields = parseFields(getVal('fields')); if (fields.length === 0) { showError('请输入字段'); return; } var cnt = parseInt($('count').value, 10) || 10; if (cnt < 1 || cnt > 1000) { showError('条数 1-1000'); return; } var fmt = $('fmt').value; var tbl = ($('tbl').value || 'users').replace(/[^\w]/g, ''); var rows = []; for (var i = 0; i < cnt; i++) { var row = {}; for (var j = 0; j < fields.length; j++) row[fields[j].name] = gen(fields[j].type); rows.push(row); } var out = ''; if (fmt === 'json') { out = JSON.stringify(rows, null, 2); } else if (fmt === 'csv') { var head = fields.map(function(f) { return f.name; }).join(','); out = head + '\n'; for (var k = 0; k < rows.length; k++) { out += fields.map(function(f) { return csvEscape(String(rows[k][f.name])); }).join(',') + '\n'; } } else if (fmt === 'tsv') { out = fields.map(function(f) { return f.name; }).join('\t') + '\n'; for (var k2 = 0; k2 < rows.length; k2++) { out += fields.map(function(f) { return String(rows[k2][f.name]).replace(/\t/g, ' '); }).join('\t') + '\n'; } } else if (fmt === 'sql') { var cols = fields.map(function(f) { return f.name.replace(/[^\w]/g, ''); }); out = 'INSERT INTO ' + tbl + ' (' + cols.join(', ') + ') VALUES\n'; for (var k3 = 0; k3 < rows.length; k3++) { var vals = fields.map(function(f) { var v = rows[k3][f.name]; if (typeof v === 'number') return v; return "'" + String(v).replace(/'/g, "''") + "'"; }); out += ' (' + vals.join(', ') + ')' + (k3 < rows.length - 1 ? ',\n' : ';\n'); } } lastResult = out; showResult(out, cnt + ' 条 · ' + fmt); } catch (e) { showError('生成失败: ' + (e.message || e)); } } $('btn-main').addEventListener('click', function(e) { e.preventDefault(); doGen(); }); $('btn-copy').addEventListener('click', function() { if (lastResult && navigator.clipboard) navigator.clipboard.writeText(lastResult); }); $('btn-download').addEventListener('click', function() { if (!lastResult) return; var fmt = $('fmt').value; var ext = fmt === 'json' ? 'json' : fmt === 'sql' ? 'sql' : 'csv'; var mime = fmt === 'json' ? 'application/json' : 'text/plain'; var blob = new Blob([lastResult], { type: mime + ';charset=utf-8' }); var url = URL.createObjectURL(blob); var a = document.createElement('a'); a.href = url; a.download = 'mock_data.' + ext; a.click(); URL.revokeObjectURL(url); }); $('btn-clear').addEventListener('click', function() { var inputs = document.querySelectorAll('input,textarea,select'); for (var i = 0; i < inputs.length; i++) { if (inputs[i].tagName === 'SELECT') inputs[i].selectedIndex = 0; else inputs[i].value = inputs[i].defaultValue; } lastResult = ''; var ra = $('result-area'); ra.hidden = true; ra.style.display = 'none'; var em = $('error-msg'); em.hidden = true; em.style.display = 'none'; $('btn-copy').style.display = 'none'; $('btn-download').style.display = 'none'; }); })();