Files
sweet-hut-ui/src/store/password.ts

76 lines
1.9 KiB
TypeScript

import { defineStore } from 'pinia'
import type { IHandleApi } from 'vue3-common/types'
import { ElMessage } from 'element-plus'
import { IPassword, IQueryPassword } from '@/types/password.ts'
import {
addPasswordApi,
deletePasswordApi,
queryPasswordApi, queryPasswordCategoryApi,
updatePasswordApi
} from '@/apis/password'
export const usePasswordStore = defineStore('password', {
state: () => ({
passwordList: [] as IPassword[],
queryInfo: {
category: '',
owner: '哥哥'
} as IQueryPassword,
passwordApiType: 'ADD' as IHandleApi,
categoryList: [] as string[],
currentPassword: {
title: '',
website: '',
username: '',
password: '',
category: '',
owner: '',
remark: ''
} as IPassword,
isScrollEnd: false,
isRefresh: false
}),
actions: {
async queryPasswordList() {
this.passwordList = await queryPasswordApi(this.queryInfo)
},
async queryPasswordCategory() {
this.categoryList = await queryPasswordCategoryApi()
},
async handlePasswordApi(password: IPassword) {
switch (this.passwordApiType) {
case 'ADD':
await addPasswordApi(password)
ElMessage.success('新增密码记录成功')
break
case 'UPDATE':
await updatePasswordApi(password.id as number, password)
ElMessage.success('更新密码记录成功')
break
case 'DELETE':
await deletePasswordApi(password.id as number)
ElMessage.success('删除密码记录成功')
break
default:
break
}
await this.refreshInfo()
},
async refreshInfo() {
await this.queryPasswordList()
this.isRefresh = !this.isRefresh
},
getEmptyPassword(): IPassword {
return {
category: '',
owner: '',
password: '',
remark: '',
title: '',
username: '',
website: ''
}
}
}
})