diff --git a/web-admin/scripts/issue-26-fold-icon-and-archive-plan-no.test.ts b/web-admin/scripts/issue-26-fold-icon-and-archive-plan-no.test.ts new file mode 100644 index 000000000..2858c7909 --- /dev/null +++ b/web-admin/scripts/issue-26-fold-icon-and-archive-plan-no.test.ts @@ -0,0 +1,36 @@ +/** + * #26 回归: + * 1) ArtSvgIcon 的 el-icon 不得带 Tailwind `inline`(生产 CSS 会覆盖 display) + * 2) 运输归档列展示含 planNo,且表格列受 isColumnVisible 控制 + */ +import test from 'node:test' +import assert from 'node:assert/strict' +import { readFileSync } from 'node:fs' +import { dirname, join } from 'node:path' +import { fileURLToPath } from 'node:url' +import { parse } from '@vue/compiler-sfc' + +const root = join(dirname(fileURLToPath(import.meta.url)), '..') + +test('ArtSvgIcon: el-icon branch must not use Tailwind inline class', () => { + const src = readFileSync(join(root, 'src/components/core/base/art-svg-icon/index.vue'), 'utf8') + const { descriptor } = parse(src) + const template = descriptor.template?.content || '' + assert.match(template, /]*class="[^"]*art-svg-icon/) + assert.doesNotMatch( + template, + /]*class="[^"]*\binline\b/, + 'el-icon must not include Tailwind inline (breaks display:inline-flex in prod CSS order)' + ) +}) + +test('plan-archive: planNo is in column defs and table visibility gate', () => { + const src = readFileSync(join(root, 'src/views/pl/plan-archive/index.vue'), 'utf8') + assert.match(src, /prop:\s*'planNo',\s*label:\s*'计划编号'/) + assert.match(src, /pl-plan-archive-list-columns-v17/) + assert.match( + src, + /v-if="isColumnVisible\('planNo'\)"[\s\S]*?prop="planNo"/, + 'planNo table column must be gated by isColumnVisible' + ) +}) diff --git a/web-admin/src/components/core/base/art-svg-icon/index.vue b/web-admin/src/components/core/base/art-svg-icon/index.vue index 685d661dc..8241d3c65 100644 --- a/web-admin/src/components/core/base/art-svg-icon/index.vue +++ b/web-admin/src/components/core/base/art-svg-icon/index.vue @@ -1,6 +1,8 @@