const fs = require('fs') const path = require('path') const root = path.resolve(__dirname, '..') function read(file) { return fs.readFileSync(path.join(root, file), 'utf8') } function assertMatch(name, content, pattern) { if (!pattern.test(content)) { throw new Error(name) } } const barcodeData = read('ruoyi-ui/src/views/bas/barcodeData/index.vue') assertMatch( '条码打印必须规范化历史条码类型值', barcodeData, /normalizeBarcodeType\s*\([\s\S]*['"]1['"]\s*:\s*['"]CODE128['"]/ ) assertMatch( '条码打印必须通过安全数值方法处理宽度和高度', barcodeData, /getBarcodeOptionNumber\s*\(/ ) assertMatch( '条码打印宽度必须使用安全数值方法', barcodeData, /const lineWidth\s*=\s*this\.getBarcodeOptionNumber/ ) assertMatch( '条码打印失败时必须显示明确错误信息', barcodeData, /生成条码打印内容失败/ ) const inStockinHistory = read('ruoyi-ui/src/views/search/inStockinHistory/index.vue') assertMatch( '入库历史单据查询必须支持点击主单行加载明细', inStockinHistory, /@row-click="handleRowClick"[\s\S]*highlight-current-row/ ) assertMatch( '入库历史单据查询必须调用入库子单明细接口', inStockinHistory, /import\s+\{\s*listStockin\s*,\s*listStockinDetail\s*\}/ ) assertMatch( '入库历史单据明细必须传递父单状态以查询完成明细表', inStockinHistory, /this\.detailQueryParams\.status\s*=\s*row\.status/ ) assertMatch( '入库历史单据明细必须有独立分页查询参数', inStockinHistory, /detailQueryParams:\s*\{[\s\S]*stockinId:\s*null/ ) assertMatch( '入库历史单据明细必须调用 listStockinDetail', inStockinHistory, /listStockinDetail\(this\.detailQueryParams\)/ ) const inJobFlow = read('ruoyi-ui/src/views/search/inJobFlow/index.vue') assertMatch( '入库流水查询必须支持点击主作业行加载明细', inJobFlow, /@row-click="handleRowClick"[\s\S]*highlight-current-row/ ) assertMatch( '入库流水查询必须调用子作业明细接口', inJobFlow, /import\s+\{\s*listJobdetail\s*\}/ ) assertMatch( '入库流水查询明细必须传递父任务状态以查询完成明细表', inJobFlow, /this\.detailQueryParams\.status\s*=\s*row\.status/ ) assertMatch( '入库流水查询明细必须有独立分页查询参数', inJobFlow, /detailQueryParams:\s*\{[\s\S]*jobId:\s*null/ ) assertMatch( '入库流水查询明细必须调用 listJobdetail', inJobFlow, /listJobdetail\(this\.detailQueryParams\)/ ) console.log('History query and barcode print checks passed')