| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /**
- * Repair list-page layout corruption: nested duplicate forms inside list-search-actions.
- */
- 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 repair(content) {
- if (!content.includes('list-search-actions')) return content
- if (!/<el-form-item class="list-search-actions">[\s\S]*?(head-container|ref="queryForm")/.test(content)) {
- return content
- }
- const searchBtn = content.match(/<el-button[^>]*@click="handleQuery"[^>]*>[^<]*<\/el-button>/)
- const resetBtn = content.match(/<el-button[^>]*@click="resetQuery"[^>]*>[^<]*<\/el-button>/)
- const searchHtml = searchBtn
- ? searchBtn[0].replace(/type="primary"/, 'type="cyan"').replace(/\stype="cyan"\s+type="cyan"/, ' type="cyan"')
- : '<el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">锟斤拷锟斤拷</el-button>'
- const resetHtml = resetBtn
- ? resetBtn[0]
- : '<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">锟斤拷锟斤拷</el-button>'
- const actionsBlock = ` <el-form-item class="list-search-actions">
- ${searchHtml}
- ${resetHtml}
- </el-form-item>
- </el-form>`
- const repaired = content.replace(
- /(\s+<\/el-form-item>\s*\n)\s*<el-form-item class="list-search-actions">[\s\S]*?<\/el-form>\s*\n\s*<el-row :gutter="10" class="mb8 list-toolbar">[\s\S]*?<\/el-form-item>\s*\n\s*<\/el-form>\s*\n(\s*<el-row :gutter="10" class="mb8 list-toolbar">)/,
- `$1${actionsBlock}\n\n$2`
- )
- return repaired
- }
- let fixed = 0
- for (const file of walk(viewsDir)) {
- const original = fs.readFileSync(file, 'utf8')
- const next = repair(original)
- if (next !== original) {
- fs.writeFileSync(file, next, 'utf8')
- fixed++
- console.log(path.relative(viewsDir, file))
- }
- }
- console.log('\nRepaired ' + fixed + ' files')
|