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 } }