88 lines
2.5 KiB
TypeScript
88 lines
2.5 KiB
TypeScript
import { defineStore } from 'pinia'
|
|
import type { ILibraryFile } from '@/types/library.ts'
|
|
import {
|
|
addLibraryFileApi,
|
|
queryLibraryFileByIdApi,
|
|
queryLibraryFileListApi,
|
|
updateLibraryFileApi
|
|
} from '@/apis/library.ts'
|
|
import type { IHandleApi, IOptions, ITreeNode } from '@/types'
|
|
import { ElMessage } from 'element-plus'
|
|
import { getModuleOptions, getSubjectOptions, getSubjectTree } from '@/utils/libraryUtil.ts'
|
|
|
|
export const useLibraryStore = defineStore('library', {
|
|
state: () => ({
|
|
selectedSubject: '' as number | string,
|
|
selectedModule: '' as number | string,
|
|
subjectTree: [] as ITreeNode[],
|
|
fileList: [] as ILibraryFile[],
|
|
currentFile: {
|
|
id: 0,
|
|
subject: '',
|
|
module: '',
|
|
name: '',
|
|
size: 0,
|
|
uploadTime: '',
|
|
type: '',
|
|
content: '',
|
|
questions: []
|
|
} as ILibraryFile,
|
|
fileDetailDialogVisible: false,
|
|
fileDialogVisible: false,
|
|
fileContentDialogVisible: false,
|
|
fileTrainDialogVisible: false,
|
|
fileApiType: 'ADD' as IHandleApi,
|
|
subjectOptions: [] as IOptions[],
|
|
moduleOptions: [] as IOptions[],
|
|
activeStep: 1
|
|
}),
|
|
actions: {
|
|
async queryFileList() {
|
|
this.fileList = []
|
|
this.fileList = await queryLibraryFileListApi()
|
|
this.subjectTree = getSubjectTree(this.fileList)
|
|
this.subjectOptions = getSubjectOptions(this.subjectTree)
|
|
|
|
if (this.subjectOptions.length > 0) {
|
|
this.selectedSubject = this.subjectOptions[0].value
|
|
this.moduleOptions = getModuleOptions(this.subjectTree, this.selectedSubject)
|
|
this.selectedModule = this.moduleOptions[0].value
|
|
}
|
|
},
|
|
async queryFileById(id: number) {
|
|
this.currentFile = await queryLibraryFileByIdApi(id)
|
|
},
|
|
async handleFileApi(file: ILibraryFile) {
|
|
switch (this.fileApiType) {
|
|
case 'ADD':
|
|
await addLibraryFileApi(file)
|
|
ElMessage.success('新增资料成功')
|
|
break
|
|
case 'UPDATE':
|
|
await updateLibraryFileApi(file.id as number, file)
|
|
ElMessage.success('更新资料成功')
|
|
break
|
|
case 'DELETE':
|
|
ElMessage.success('删除资料成功')
|
|
break
|
|
default:
|
|
break
|
|
}
|
|
this.fileDialogVisible = false
|
|
await this.queryFileList()
|
|
},
|
|
getEmptyFile(): ILibraryFile {
|
|
return {
|
|
id: 0,
|
|
module: '',
|
|
name: '',
|
|
size: 0,
|
|
subject: '',
|
|
uploadTime: '',
|
|
type: '',
|
|
content: ''
|
|
}
|
|
}
|
|
}
|
|
})
|