import { request } from '@/api/request.js' /** * 账号管理(密码库)——记录个人各平台账号。 * 与 Web 端密码存储管理同一套数据(一个平台下挂多个账号)。 * 服务端自动过滤当前登录用户的记录,无需传 user_id。 */ export function fetchPasswordStores(keyword) { return request({ url: '/api/passwordStore/list', data: keyword ? { keyword } : {} }).then(data => ({ list: (data.list || []).map(normalizeStore), total: data.total || 0 })) } export function getPasswordStore(id) { return request({ url: `/api/passwordStore/detail/${id}` }).then(normalizeStore) } export function createPasswordStore(data) { return request({ url: '/api/passwordStore/create', method: 'POST', data: pickStore(data) }).then(normalizeStore) } export function updatePasswordStore(id, data) { return request({ url: `/api/passwordStore/update/${id}`, method: 'POST', data: pickStore(data) }).then(normalizeStore) } export function deletePasswordStore(id) { return request({ url: `/api/passwordStore/delete/${id}`, method: 'DELETE' }).then(() => true) } /** 只取服务端接收的字段 */ function pickStore(data) { return { platform: data.platform || '', url: data.url || '', remark: data.remark || '', accounts: (data.accounts || []).map(a => ({ username: a.username || '', password: a.password || '', registration_info: a.registration_info || '', remark: a.remark || '' })) } } /** 统一账号列表结构,避免后端缺字段导致渲染报错 */ function normalizeStore(item) { const store = item || {} return { ...store, platform: store.platform || '', url: store.url || '', remark: store.remark || '', accounts: (store.accounts || []).map(a => ({ username: a.username || '', password: a.password || '', registration_info: a.registration_info || '', remark: a.remark || '' })) } }