/** * 将 queryForm 内带 list-search-actions 的块移到 前,使搜索按钮靠右对齐。 * Usage: node scripts/move-list-search-actions-to-end.js [viewsDir] */ const fs = require('fs') const path = require('path') const viewsDir = process.argv[2] ? path.resolve(process.argv[2]) : path.join(__dirname, '../src/views') 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 } function normalizeActionsBlock(block) { // el-col 改为 template,避免嵌套 el-row 时破坏 el-form-item 布局 return block .replace(/]*)>/g, '') .replace(/<\/el-col>/g, '') } function moveSearchActionsToEnd(content) { const queryIdx = content.indexOf('ref="queryForm"') if (queryIdx < 0 || !content.includes('list-search-actions')) return content const formOpenStart = content.lastIndexOf('', queryIdx) if (formOpenStart < 0 || formCloseStart < 0) return content const before = content.slice(0, formOpenStart) const formTagEnd = content.indexOf('>', formOpenStart) + 1 const formOpenTag = content.slice(formOpenStart, formTagEnd) let formBody = content.slice(formTagEnd, formCloseStart) const after = content.slice(formCloseStart) const actionsRe = /]*\blist-search-actions\b[^>]*>[\s\S]*?<\/el-form-item>\s*/g const actions = [] formBody = formBody.replace(actionsRe, (m) => { actions.push(normalizeActionsBlock(m.replace(/\s+$/, ''))) return '' }) if (actions.length === 0) return content formBody = formBody.replace(/\n{3,}/g, '\n\n').replace(/\s+$/, '') const actionsBlock = '\n' + actions.join('\n') + '\n' return before + formOpenTag + formBody + actionsBlock + after } let changed = 0 for (const file of walk(viewsDir)) { const original = fs.readFileSync(file, 'utf8') const next = moveSearchActionsToEnd(original) if (next !== original) { fs.writeFileSync(file, next, 'utf8') changed++ console.log(path.relative(viewsDir, file)) } } console.log('\nMoved list-search-actions in ' + changed + ' files')