76 lines
1.9 KiB
TypeScript
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: ''
|
|
}
|
|
}
|
|
}
|
|
})
|