# Change: 为 IoT 卡管理和设备管理新增生效套餐筛选

## Why

当前后台的 IoT 卡管理页和设备管理页都缺少“是否有生效中的套餐”搜索条件，运营人员无法直接按资产当前是否存在生效中的套餐快速筛选目标记录。

本次需求要求两个列表统一新增该筛选能力，并通过查询参数 `has_active_package` 向后端传递筛选条件，避免用户依赖列表详情或手工比对来判断。

## What Changes

- 在 IoT 卡管理页搜索栏新增 `是否有生效中的套餐` 筛选项：
  - 使用“是 / 否”布尔选项
  - 向 `GET /api/admin/iot-cards/standalone` 提交可选查询参数 `has_active_package`
  - 未选择时不提交该参数
- 在设备管理页搜索栏新增 `是否有生效中的套餐` 筛选项：
  - 使用“是 / 否”布尔选项
  - 向 `GET /api/admin/devices` 提交可选查询参数 `has_active_package`
  - 未选择时不提交该参数
- 补齐前端类型契约与搜索状态管理：
  - `StandaloneCardQueryParams` 支持 `has_active_package`
  - `DeviceQueryParams` 支持 `has_active_package`
  - 搜索、重置、翻页、刷新流程中正确保留或清空该条件
- 明确 `false` 是有效筛选值：
  - 选择“否”时必须提交 `has_active_package=false`
  - 前端不得因为通用空值清理或 `|| undefined` 之类的写法丢掉该参数

## Impact

- Affected specs:
  - `iot-card-management`
  - `device-management`
- Affected code:
  - `src/types/api/card.ts`
  - `src/types/api/device.ts`
  - `src/api/modules/card.ts`
  - `src/api/modules/device.ts`
  - `src/views/asset-management/iot-card-management/index.vue`
  - `src/views/asset-management/device-list/index.vue`
- Dependencies:
  - `GET /api/admin/iot-cards/standalone`
  - `GET /api/admin/devices`
- Breaking changes:
  - 无
