cleanup-nine-precautions-export.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. const fs = require('fs')
  2. const path = require('path')
  3. const baseDir = path.resolve(__dirname, '../src/views/elderly/apply/nine-precautions')
  4. const dirs = fs.readdirSync(baseDir).filter(d => fs.statSync(path.join(baseDir, d)).isDirectory())
  5. dirs.forEach(dir => {
  6. const filePath = path.join(baseDir, dir, 'index.vue')
  7. if (!fs.existsSync(filePath)) return
  8. let content = fs.readFileSync(filePath, 'utf-8')
  9. let modified = false
  10. // 1. 移除 BatchExportDialog 组件(支持有无注释前缀)
  11. const batchDialogRegex = /(\s*<!-- 通用批量导出弹窗 -->\s*)?<BatchExportDialog[\s\S]*?<\/BatchExportDialog>/
  12. if (batchDialogRegex.test(content)) {
  13. content = content.replace(batchDialogRegex, '')
  14. modified = true
  15. }
  16. // 2. 修复 ButtonAdd 后未自动导入 ButtonImport 的情况( nutritional-risk 等)
  17. if (content.includes('<ButtonImport') && !content.includes("import ButtonImport from '@/components/ButtonImport/src/ButtonImport.vue'")) {
  18. // 在 script 标签后的第一行 import 处插入
  19. content = content.replace(
  20. '<script setup lang="ts">',
  21. '<script setup lang="ts">\nimport ButtonImport from \'@/components/ButtonImport/src/ButtonImport.vue\''
  22. )
  23. modified = true
  24. }
  25. // 3. 移除旧的空壳 handleImportCard / handleBatchExport 残留
  26. const oldHandleRegex = /\/\/ 打开导出弹窗\s*const handleImportCard = async \(\) => \{[\s\S]*?\}\s*/
  27. if (oldHandleRegex.test(content)) {
  28. content = content.replace(oldHandleRegex, '')
  29. modified = true
  30. }
  31. // 4. 整理 headers 缩进:将 6 空格缩进的单引号 key/title 改为 2 空格
  32. content = content.replace(/\n 'key': /g, "\n 'key': ")
  33. content = content.replace(/\n 'title': /g, "\n 'title': ")
  34. // 5. 修正 div 闭合标签缩进:将 ButtonImport 后的 </div> 单独一行并正确缩进
  35. content = content.replace(
  36. /(<ButtonImport @click="handleImportCard" \/>)\n <!-- <el-button @click="inputH" type="success">.*<\/el-button>-->\n<\/div>/g,
  37. '$1\n </div>'
  38. )
  39. // 兜底:把 "-->\n</div>" 替换为 "-->\n </div>"
  40. content = content.replace(/-->\n<\/div>/g, '-->\n </div>')
  41. // 6. 将 exportData.map 中的 const row = { ... } 改为 const row: any = { ... }
  42. content = content.replace(
  43. /const processedData = exportData\.map\(\(item\) => \{\n const row = \{/g,
  44. 'const processedData = exportData.map((item) => {\n const row: any = {'
  45. )
  46. if (modified || content !== fs.readFileSync(filePath, 'utf-8')) {
  47. fs.writeFileSync(filePath, content, 'utf-8')
  48. console.log(`已清理:${filePath}`)
  49. }
  50. })