## 1. API And Types - [x] 1.1 Extend IoT card list query params with `authorized_enterprise_id?: number` and `is_authorized_to_enterprise?: boolean | null`. - [x] 1.2 Extend device list query params with `authorized_enterprise_id?: number` and `is_authorized_to_enterprise?: boolean | null`. - [x] 1.3 Align enterprise card authorization request types with `selection_type: 'list' | 'range' | 'filter'`, list/range/filter fields, and optional `remark`. - [x] 1.4 Align enterprise device authorization request types with `selection_type: 'list' | 'filter'`, list/filter fields, and optional `remark`. - [x] 1.5 Keep using `EnterpriseService.allocateCards`, `recallCards`, `allocateDevices`, and `recallDevices`; update method types only if needed. ## 2. IoT Card Management - [x] 2.1 Add enterprise authorization filters to the IoT card search form and request payload. - [x] 2.2 Add “授权卡给企业” before the export button with permission `iot_card:authorize_enterprise`. - [x] 2.3 Add “回收卡授权” before the export button with permission `iot_card:recall_enterprise_authorization`. - [x] 2.4 Implement card authorization dialog with target enterprise selection, selection mode, list/range/filter inputs, optional remark, validation, submit, loading state, and result display. - [x] 2.4.1 Update the card authorization dialog shop filter to use the same lazy shop cascade tree as the add-shop dialog “上级店铺” field, and submit the last selected node as `shop_id`. - [x] 2.5 Implement card recall dialog with target/source enterprise resolution, selection mode, list/range/filter inputs, optional remark, validation, submit, loading state, and result display. - [x] 2.6 Refresh the IoT card list after successful authorization or recall. ## 3. Device Management - [x] 3.1 Add enterprise authorization filters to the device search form and request payload. - [x] 3.2 Add “授权设备给企业” before the export button with permission `devices:authorize_enterprise`. - [x] 3.3 Add “撤销设备授权” before the export button with permission `devices:recall_enterprise_authorization`. - [x] 3.4 Implement device authorization dialog with target enterprise selection, selection mode, list/filter inputs, optional remark, validation, submit, loading state, and result display. - [x] 3.4.1 Update the device authorization dialog shop filter to use the same lazy shop cascade tree as the add-shop dialog “上级店铺” field, and submit the last selected node as `shop_id`. - [x] 3.5 Implement device recall dialog with target/source enterprise resolution, selection mode, list/filter inputs, validation, submit, loading state, and result display. - [x] 3.6 Refresh the device list after successful authorization or recall. ## 4. Remove Replaced Enterprise Authorization Pages - [x] 4.1 Remove “卡授权” and “设备授权” operations from the enterprise customer action column. - [x] 4.2 Remove navigation logic to enterprise card/device authorization pages. - [x] 4.3 Remove hidden routes for `/asset-management/enterprise-cards` and `/asset-management/enterprise-devices`. - [x] 4.4 Remove `RoutesAlias.EnterpriseCards` and `RoutesAlias.EnterpriseDevices`. - [x] 4.5 Delete the replaced “企业卡管理” page file `src/views/asset-management/enterprise-cards/index.vue`. - [x] 4.6 Delete the replaced “企业设备列表” page file `src/views/asset-management/enterprise-devices/index.vue`. - [x] 4.7 Verify no imports, route aliases, menu entries, or navigation calls reference the deleted pages. ## 5. Validation - [x] 5.1 Verify IoT card list filters send correct query parameters and reset correctly. - [x] 5.2 Verify device list filters send correct query parameters and reset correctly. - [x] 5.3 Verify all four new buttons obey their permission codes. - [x] 5.4 Verify list/range/filter authorization and recall flows against API contracts from `docs/授权、回收.md`. - [x] 5.5 Run targeted ESLint for modified files. - [ ] 5.6 Run `openspec validate update-enterprise-asset-authorization-entry --strict` when the OpenSpec CLI is available.