diff --git a/frontend/src/views/partners/PartnerList.test.js b/frontend/src/views/partners/PartnerList.test.js index 20941819..c0ce8500 100644 --- a/frontend/src/views/partners/PartnerList.test.js +++ b/frontend/src/views/partners/PartnerList.test.js @@ -123,3 +123,36 @@ describe('伙伴表单必填校验', () => { wrapper.unmount() }) }) + +describe('伙伴列表的合作状态显示', () => { + beforeEach(() => { + partnersApi.list.mockReset().mockResolvedValue({ data: [] }) + }) + + afterEach(() => { + vi.restoreAllMocks() + }) + + test('合作状态列显示中文,不把英文枚举值直接给用户', async () => { + partnersApi.list.mockResolvedValue({ + data: [{ id: 1, partner_code: 'SUP-001', legal_name: '某某钢材有限公司', supplier_status: 'active' }] + }) + const wrapper = mountPartner() + await flushPromises() + + expect(wrapper.text()).toContain('启用') + expect(wrapper.text()).not.toContain('active') + wrapper.unmount() + }) + + test('未收录的状态原样显示,不伪装成已知状态', async () => { + partnersApi.list.mockResolvedValue({ + data: [{ id: 2, partner_code: 'SUP-002', legal_name: '某某轴承厂', supplier_status: 'unknown_state' }] + }) + const wrapper = mountPartner() + await flushPromises() + + expect(wrapper.text()).toContain('unknown_state') + wrapper.unmount() + }) +}) diff --git a/frontend/src/views/partners/PartnerList.vue b/frontend/src/views/partners/PartnerList.vue index 71c243c5..7d21dc30 100644 --- a/frontend/src/views/partners/PartnerList.vue +++ b/frontend/src/views/partners/PartnerList.vue @@ -10,7 +10,7 @@ - + @@ -25,11 +25,7 @@ - - - - - + @@ -50,6 +46,10 @@ const saving = ref(false) const dialogVisible = ref(false) const editingId = ref(null) const statusField = computed(() => `${props.role}_status`) +// 合作状态英文枚举到中文的对照。列表列与编辑弹窗共用这一份,避免两处各写一遍后失步。 +const STATUS_LABELS = { active: '启用', suspended: '暂停', eliminated: '淘汰', pending: '待审核', inactive: '停用' } +// 未收录的状态原样显示,不伪装成某个已知状态。 +function statusFormatter(row, column, cellValue) { return STATUS_LABELS[cellValue] || cellValue } const form = reactive(emptyForm()) function emptyForm() { return { partner_code: '', legal_name: '', unified_credit_code: '', contact_name: '', contact_phone: '', address: '', status: 'active', is_supplier: false, is_customer: false } }