From cbcd54b70c35c270f45a1d34995e70606c61c44d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=87=E7=9D=BF=20=E5=BC=A0?= Date: Mon, 21 Sep 2026 14:56:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=99=E4=BC=B4=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E7=9A=84=E5=90=88=E4=BD=9C=E7=8A=B6=E6=80=81=E5=88=97=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E4=B8=AD=E6=96=87=EF=BC=8C=E4=B8=8D=E5=86=8D=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E6=9A=B4=E9=9C=B2=E8=8B=B1=E6=96=87=E6=9E=9A=E4=B8=BE?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/partners/PartnerList.test.js | 33 +++++++++++++++++++ frontend/src/views/partners/PartnerList.vue | 12 +++---- 2 files changed, 39 insertions(+), 6 deletions(-) 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 } }