# 后端枚举字段说明

## 概述

后端只返回枚举代码值，不返回枚举名称。前端需要根据代码值进行转换显示。

---

## API 返回的枚举字段

### 1. 中介类型 (intermediaryType)

| 代码值 | 说明   |
|-----|------|
| `1` | 个人中介 |
| `2` | 机构中介 |

**前端转换示例:**

```javascript
const getIntermediaryTypeName = (type) => {
  const map = {
    '1': '个人',
    '2': '机构'
  }
  return map[type] || '未知'
}
```

### 2. 状态 (status)

| 代码值 | 说明 |
|-----|----|
| `0` | 正常 |
| `1` | 停用 |

**前端转换示例:**

```javascript
const getStatusName = (status) => {
  const map = {
    '0': '正常',
    '1': '停用'
  }
  return map[status] || '未知'
}
```

### 3. 数据来源 (dataSource / date_source)

| 代码值      | 说明   |
|----------|------|
| `MANUAL` | 手动录入 |
| `IMPORT` | 批量导入 |
| `SYSTEM` | 系统同步 |
| `API`    | 接口获取 |

**前端转换示例:**

```javascript
const getDataSourceName = (source) => {
  const map = {
    'MANUAL': '手动录入',
    'IMPORT': '批量导入',
    'SYSTEM': '系统同步',
    'API': '接口获取'
  }
  return map[source] || '未知'
}
```

### 4. 性别 (indivGender) - 个人中介

| 代码值 | 说明 |
|-----|----|
| `M` | 男  |
| `F` | 女  |
| `O` | 其他 |

**前端转换示例:**

```javascript
const getGenderName = (gender) => {
  const map = {
    'M': '男',
    'F': '女',
    'O': '其他'
  }
  return map[gender] || '未知'
}
```

### 5. 证件类型 (indivCertType)

常用证件类型代码:

- `身份证` - 身份证
- `护照` - 护照
- `港澳通行证` - 港澳通行证
- `台湾通行证` - 台湾通行证

---

## API 返回数据示例

### 列表查询响应

```json
{
  "code": 200,
  "msg": "查询成功",
  "rows": [
    {
      "intermediaryId": 1,
      "name": "张三",
      "certificateNo": "110101199001011234",
      "intermediaryType": "1",
      "status": "0",
      "dataSource": "MANUAL",
      "createTime": "2026-02-04 10:00:00",
      "updateTime": "2026-02-04 10:00:00"
    },
    {
      "intermediaryId": 0,
      "name": "测试机构有限公司",
      "certificateNo": "91110000123456789X",
      "intermediaryType": "2",
      "status": "0",
      "dataSource": "MANUAL",
      "createTime": "2026-02-04 10:00:00",
      "updateTime": "2026-02-04 10:00:00"
    }
  ],
  "total": 2
}
```

### 个人中介详情响应

```json
{
  "code": 200,
  "data": {
    "intermediaryId": 1,
    "name": "张三",
    "certificateNo": "110101199001011234",
    "intermediaryType": "1",
    "status": "0",
    "dataSource": "MANUAL",
    "remark": "测试数据",
    "indivType": "中介",
    "indivSubType": "本人",
    "indivGender": "M",
    "indivCertType": "身份证",
    "indivPhone": "13800138000",
    "indivWechat": "test_wx001",
    "indivAddress": "北京市朝阳区测试路123号",
    "indivCompany": "测试公司",
    "indivPosition": "测试员",
    "createTime": "2026-02-04 10:00:00"
  }
}
```

### 机构中介详情响应

```json
{
  "code": 200,
  "data": {
    "intermediaryId": 0,
    "name": "测试机构有限公司",
    "certificateNo": "91110000123456789X",
    "intermediaryType": "2",
    "status": "0",
    "dataSource": "MANUAL",
    "remark": "机构中介测试数据",
    "corpCreditCode": "91110000123456789X",
    "corpType": "有限责任公司",
    "corpNature": "民营企业",
    "corpIndustryCategory": "制造业",
    "corpIndustry": "通用设备制造业",
    "corpEstablishDate": "2020-01-01",
    "corpAddress": "北京市海淀区测试大街456号",
    "corpLegalRep": "李四",
    "corpLegalCertType": "身份证",
    "corpLegalCertNo": "110101198001011234",
    "createTime": "2026-02-04 10:00:00"
  }
}
```

---

## 前端 Vue 组件示例

### 枚举转换工具函数

```javascript
// utils/enums.js
export const IntermediaryType = {
  PERSON: '1',
  ENTITY: '2',
  getName: (type) => {
    const map = {
      '1': '个人',
      '2': '机构'
    }
    return map[type] || '未知'
  }
}

export const IntermediaryStatus = {
  NORMAL: '0',
  DISABLED: '1',
  getName: (status) => {
    const map = {
      '0': '正常',
      '1': '停用'
    }
    return map[status] || '未知'
  }
}

export const DataSource = {
  MANUAL: 'MANUAL',
  IMPORT: 'IMPORT',
  SYSTEM: 'SYSTEM',
  API: 'API',
  getName: (source) => {
    const map = {
      'MANUAL': '手动录入',
      'IMPORT': '批量导入',
      'SYSTEM': '系统同步',
      'API': '接口获取'
    }
    return map[source] || '未知'
  }
}

export const Gender = {
  MALE: 'M',
  FEMALE: 'F',
  OTHER: 'O',
  getName: (gender) => {
    const map = {
      'M': '男',
      'F': '女',
      'O': '其他'
    }
    return map[gender] || '未知'
  }
}
```

### 表格列使用枚举

```vue
<template>
  <el-table :data="tableData">
    <el-table-column prop="name" label="姓名" />

    <el-table-column prop="intermediaryType" label="中介类型">
      <template #default="{ row }">
        {{ IntermediaryType.getName(row.intermediaryType) }}
      </template>
    </el-table-column>

    <el-table-column prop="status" label="状态">
      <template #default="{ row }">
        <el-tag :type="row.status === '0' ? 'success' : 'danger'">
          {{ IntermediaryStatus.getName(row.status) }}
        </el-tag>
      </template>
    </el-table-column>

    <el-table-column prop="dataSource" label="数据来源">
      <template #default="{ row }">
        {{ DataSource.getName(row.dataSource) }}
      </template>
    </el-table-column>
  </el-table>
</template>

<script>
import { IntermediaryType, IntermediaryStatus, DataSource } from '@/utils/enums'

export default {
  data() {
    return {
      IntermediaryType,
      IntermediaryStatus,
      DataSource,
      tableData: []
    }
  }
}
</script>
```

### 表单下拉框使用枚举

```vue
<template>
  <el-form :model="form">
    <el-form-item label="中介类型" prop="intermediaryType">
      <el-select v-model="form.intermediaryType" placeholder="请选择中介类型">
        <el-option label="个人" value="1" />
        <el-option label="机构" value="2" />
      </el-select>
    </el-form-item>

    <el-form-item label="状态" prop="status">
      <el-radio-group v-model="form.status">
        <el-radio label="0">正常</el-radio>
        <el-radio label="1">停用</el-radio>
      </el-radio-group>
    </el-form-item>
  </el-form>
</template>
```

---

## 注意事项

1. **后端只返回代码值**，前端负责转换为显示名称
2. **前端下拉框的 value 应该使用代码值**（如 '1', '2', '0' 等）
3. **建议在前端统一维护枚举映射关系**，避免硬编码
4. **新增枚举值时**，只需要前端更新映射表即可，后端无需修改
5. **国际化支持**：前端可以根据语言切换返回不同的名称
