| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- /**
- * 修复 lobster 表格列宽塌陷问题,统一添加 lobster-list-table 类并将固定 width 改为弹性 min-width
- */
- const fs = require('fs')
- const path = require('path')
- const ROOT = path.join(__dirname, '../src/views/lobster')
- function walk(dir, files = []) {
- for (const name of fs.readdirSync(dir)) {
- const full = path.join(dir, name)
- if (fs.statSync(full).isDirectory()) walk(full, files)
- else if (name.endsWith('.vue')) files.push(full)
- }
- return files
- }
- const COLUMN_FIXES = [
- [/label="配置名" prop="configName" width="200"/g, 'label="配置名" prop="configName" min-width="140"'],
- [/label="关键词" prop="keywords" width="320"/g, 'label="关键词" prop="keywords" min-width="180"'],
- [/label="敏感词" prop="word" width="220"/g, 'label="敏感词" prop="word" min-width="100"'],
- [/label="提示词名称" align="center" prop="prompt_name" width="180"/g, 'label="提示词名称" align="center" prop="prompt_name" min-width="120"'],
- [/label="提示词标识" align="center" prop="prompt_key" width="200"/g, 'label="提示词标识" align="center" prop="prompt_key" min-width="140"'],
- [/label="提示词名称" align="center" prop="promptName" width="180"/g, 'label="提示词名称" align="center" prop="promptName" min-width="120"'],
- [/label="提示词标识" align="center" prop="promptKey" width="200"/g, 'label="提示词标识" align="center" prop="promptKey" min-width="140"'],
- [/label="模型A \(评分\/初审\)" prop="modelA" width="180"/g, 'label="模型A (评分/初审)" prop="modelA" min-width="120"'],
- [/label="模型B \(重试\/复审\)" prop="modelB" width="180"/g, 'label="模型B (重试/复审)" prop="modelB" min-width="120"'],
- [/label="模型C \(校验\/终审\)" prop="modelC" width="180"/g, 'label="模型C (校验/终审)" prop="modelC" min-width="120"'],
- [/label="优化原因" align="center" prop="optimizationReason" show-overflow-tooltip \/>/g, 'label="优化原因" align="center" prop="optimizationReason" min-width="120" show-overflow-tooltip />'],
- [/label="原始内容" align="center" prop="originalContent" show-overflow-tooltip \/>/g, 'label="原始内容" align="center" prop="originalContent" min-width="160" show-overflow-tooltip />'],
- [/label="优化后内容" align="center" prop="optimizedContent" show-overflow-tooltip \/>/g, 'label="优化后内容" align="center" prop="optimizedContent" min-width="160" show-overflow-tooltip />'],
- [/label="客户问题" align="center" prop="customerQuestion" show-overflow-tooltip \/>/g, 'label="客户问题" align="center" prop="customerQuestion" min-width="180" show-overflow-tooltip />'],
- [/label="销售回复" align="center" prop="salesAnswer" show-overflow-tooltip \/>/g, 'label="销售回复" align="center" prop="salesAnswer" min-width="180" show-overflow-tooltip />'],
- [/label="消息内容" align="center" prop="content" show-overflow-tooltip \/>/g, 'label="消息内容" align="center" prop="content" min-width="180" show-overflow-tooltip />'],
- [/label="错误信息" align="center" prop="errorMessage" show-overflow-tooltip \/>/g, 'label="错误信息" align="center" prop="errorMessage" min-width="160" show-overflow-tooltip />'],
- [/label="API密钥" align="center" prop="apiKey" \/>/g, 'label="API密钥" align="center" prop="apiKey" min-width="120" show-overflow-tooltip />'],
- [/label="接口名称" align="center" prop="apiName" \/>/g, 'label="接口名称" align="center" prop="apiName" min-width="120" show-overflow-tooltip />'],
- [/label="Base URL" align="center" prop="baseUrl" show-overflow-tooltip \/>/g, 'label="Base URL" align="center" prop="baseUrl" min-width="160" show-overflow-tooltip />'],
- [/label="模板名称" align="center" prop="template_name" show-overflow-tooltip \/>/g, 'label="模板名称" align="center" prop="template_name" min-width="140" show-overflow-tooltip />'],
- [/label="提示词名称" align="center" prop="promptName" show-overflow-tooltip \/>/g, 'label="提示词名称" align="center" prop="promptName" min-width="140" show-overflow-tooltip />'],
- [/label="节点描述" align="center" prop="node_description" show-overflow-tooltip \/>/g, 'label="节点描述" align="center" prop="node_description" min-width="160" show-overflow-tooltip />'],
- [/label="当前节点" align="center" prop="currentNodeName" \/>/g, 'label="当前节点" align="center" prop="currentNodeName" min-width="120" show-overflow-tooltip />'],
- [/prop="handler" label="处理方式" show-overflow-tooltip \/>/g, 'prop="handler" label="处理方式" min-width="160" show-overflow-tooltip />'],
- [/prop="gapNote" label="差距" show-overflow-tooltip \/>/g, 'prop="gapNote" label="差距" min-width="120" show-overflow-tooltip />'],
- [/prop="testName" label="测试名称"\/>/g, 'prop="testName" label="测试名称" min-width="120" show-overflow-tooltip/>'],
- [/prop="originalMessage" label="原始消息" show-overflow-tooltip\/>/g, 'prop="originalMessage" label="原始消息" min-width="160" show-overflow-tooltip/>'],
- [/prop="variantMessage" label="变体消息" show-overflow-tooltip\/>/g, 'prop="variantMessage" label="变体消息" min-width="160" show-overflow-tooltip/>'],
- [/prop="title" label="标题" show-overflow-tooltip\/>/g, 'prop="title" label="标题" min-width="140" show-overflow-tooltip/>'],
- [/prop="description" label="描述" show-overflow-tooltip\/>/g, 'prop="description" label="描述" min-width="180" show-overflow-tooltip/>'],
- [/label="业务描述" prop="businessDesc" show-overflow-tooltip \/>/g, 'label="业务描述" prop="businessDesc" min-width="160" show-overflow-tooltip />'],
- [/prop="totalTokens" label="Token消耗" sortable \/>/g, 'prop="totalTokens" label="Token消耗" min-width="100" sortable />'],
- [/prop="totalCost" label="总费用">/g, 'prop="totalCost" label="总费用" min-width="100">'],
- [/prop="requestCount" label="请求次数" \/>/g, 'prop="requestCount" label="请求次数" min-width="90" />']
- ]
- function addTableClass(content) {
- content = content.replace(/lobster-config-table/g, 'lobster-list-table')
- return content.replace(/<el-table(\s[^>]*?)>/g, (match, attrs) => {
- if (/lobster-list-table/.test(attrs)) return match
- if (/class="([^"]*)"/.test(attrs)) {
- return match.replace(/class="([^"]*)"/, 'class="$1 lobster-list-table"')
- }
- return `<el-table class="lobster-list-table"${attrs}>`
- })
- }
- let changed = 0
- for (const file of walk(ROOT)) {
- let content = fs.readFileSync(file, 'utf8')
- if (!content.includes('<el-table')) continue
- const original = content
- content = addTableClass(content)
- for (const [pattern, replacement] of COLUMN_FIXES) {
- content = content.replace(pattern, replacement)
- }
- if (content !== original) {
- fs.writeFileSync(file, content, 'utf8')
- changed++
- console.log('updated:', path.relative(path.join(__dirname, '..'), file))
- }
- }
- console.log('done, files updated:', changed)
|