Files
2026-11-03 09:00:29 +08:00

78 lines
1.9 KiB
JavaScript

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