66 lines
1.9 KiB
JavaScript
66 lines
1.9 KiB
JavaScript
const fs = require('fs');
|
|
|
|
// 修复所有破碎的 HTML 属性和标签
|
|
function fixBrokenHtml(content) {
|
|
// 修复破碎的属性(缺少闭合引号)
|
|
content = content.replace(/placeholder="([^"]*)"/g, (match, p1) => {
|
|
if (!match.endsWith('"')) {
|
|
return 'placeholder="' + p1 + '"';
|
|
}
|
|
return match;
|
|
});
|
|
|
|
content = content.replace(/title="([^"]*)"/g, (match, p1) => {
|
|
if (!match.endsWith('"')) {
|
|
return 'title="' + p1 + '"';
|
|
}
|
|
return match;
|
|
});
|
|
|
|
// 修复破碎的标签
|
|
content = content.replace(/>([^<]+)\/option>/g, '>$1</option>');
|
|
content = content.replace(/>([^<]+)\/th>/g, '>$1</th>');
|
|
content = content.replace(/>([^<]+)\/td>/g, '>$1</td>');
|
|
content = content.replace(/>([^<]+)\/button>/g, '>$1</button>');
|
|
content = content.replace(/>([^<]+)\/label>/g, '>$1</label>');
|
|
content = content.replace(/>([^<]+)\/span>/g, '>$1</span>');
|
|
content = content.replace(/>([^<]+)\/p>/g, '>$1</p>');
|
|
content = content.replace(/>([^<]+)\/h([1-6])>/g, '>$1</h$2>');
|
|
content = content.replace(/>([^<]+)\/li>/g, '>$1</li>');
|
|
content = content.replace(/>([^<]+)\/a>/g, '>$1</a>');
|
|
content = content.replace(/>([^<]+)\/div>/g, '>$1</div>');
|
|
|
|
return content;
|
|
}
|
|
|
|
const files = [
|
|
'src/views/order/OrderList.vue',
|
|
'src/views/order/OrderFollow.vue',
|
|
'src/views/order/OrderRecheck.vue',
|
|
'src/views/order/OrderTracking.vue',
|
|
'src/views/quote/QuoteGenerate.vue'
|
|
];
|
|
|
|
let totalFixed = 0;
|
|
|
|
files.forEach(file => {
|
|
try {
|
|
let content = fs.readFileSync(file, 'utf8');
|
|
const original = content;
|
|
|
|
content = fixBrokenHtml(content);
|
|
|
|
if (content !== original) {
|
|
fs.writeFileSync(file, content, 'utf8');
|
|
console.log('Fixed: ' + file);
|
|
totalFixed++;
|
|
} else {
|
|
console.log('No changes: ' + file);
|
|
}
|
|
} catch(e) {
|
|
console.log('Error fixing ' + file + ': ' + e.message);
|
|
}
|
|
});
|
|
|
|
console.log('\nTotal fixed: ' + totalFixed + ' files');
|