diff --git a/web-admin/scripts/cert-ready-default.test.ts b/web-admin/scripts/cert-ready-default.test.ts index b7c11f666..88dfbeb83 100644 --- a/web-admin/scripts/cert-ready-default.test.ts +++ b/web-admin/scripts/cert-ready-default.test.ts @@ -25,6 +25,20 @@ test('incomplete certificate filter is sent as quotaCertWaivedIn=0', () => { assert.deepEqual(params, { quotaCertWaivedIn: '0' }) }) +test('fulfill tab selection column is first among table columns', () => { + const web = readFileSync(new URL('../src/views/pl/cert-ready/index.vue', import.meta.url), 'utf8') + const selectionIdx = web.indexOf('type="selection"') + const columnsIdx = web.indexOf('v-for="column in columns"') + const actionsIdx = web.indexOf('label="操作"') + assert.ok(selectionIdx > 0, 'selection column missing') + assert.ok(columnsIdx > selectionIdx, 'selection must precede business columns') + assert.ok(actionsIdx > columnsIdx, 'actions must follow business columns') + assert.match( + web, + /v-if="listMode === 'fulfill'"[\s\S]*?type="selection"[\s\S]*?v-for="column in columns"/ + ) +}) + test('web funnel and miniprogram status dropdown default to incomplete', () => { const web = readFileSync(new URL('../src/views/pl/cert-ready/index.vue', import.meta.url), 'utf8') const mobile = readFileSync( diff --git a/web-admin/src/views/pl/cert-ready/index.vue b/web-admin/src/views/pl/cert-ready/index.vue index 0485cf4c5..60a875275 100644 --- a/web-admin/src/views/pl/cert-ready/index.vue +++ b/web-admin/src/views/pl/cert-ready/index.vue @@ -50,6 +50,14 @@ class="list-table" @selection-change="onSelectionChange" > + {{ row[column.prop] || '—' }} -