2022-04-08 02:42:44 +00:00
|
|
|
import {
|
|
|
|
|
apiFileCateAdd,
|
|
|
|
|
apiFileCateDelete,
|
|
|
|
|
apiFileCateEdit,
|
|
|
|
|
apiFileCateLists,
|
|
|
|
|
apiFileDelete,
|
|
|
|
|
apiFileList,
|
2022-04-13 09:38:53 +00:00
|
|
|
apiFileMove
|
|
|
|
|
} from '@/api/app'
|
|
|
|
|
import { usePages } from '@/core/hooks/pages'
|
|
|
|
|
import { ElMessage } from 'element-plus'
|
|
|
|
|
import { computed, inject, reactive, ref, Ref } from 'vue'
|
2022-04-08 02:42:44 +00:00
|
|
|
|
|
|
|
|
// 左侧分组的钩子函数
|
|
|
|
|
export function useCate(typeValue: Ref<any>) {
|
|
|
|
|
// 分组列表
|
|
|
|
|
const cateLists: Ref<any[]> = ref([])
|
|
|
|
|
// 选中的分组id
|
2022-04-13 09:38:53 +00:00
|
|
|
const cateId = ref('')
|
2022-04-08 02:42:44 +00:00
|
|
|
// 添加分组
|
|
|
|
|
const handleAddCate = (val: string) => {
|
|
|
|
|
apiFileCateAdd({
|
|
|
|
|
type: typeValue.value,
|
|
|
|
|
pid: 0,
|
2022-04-13 09:38:53 +00:00
|
|
|
name: val
|
2022-04-08 02:42:44 +00:00
|
|
|
}).then(() => {
|
|
|
|
|
getCateLists()
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
// 编辑分组
|
|
|
|
|
const handleEditCate = (val: string, id: number) => {
|
|
|
|
|
apiFileCateEdit({
|
|
|
|
|
id,
|
2022-04-13 09:38:53 +00:00
|
|
|
name: val
|
2022-04-08 02:42:44 +00:00
|
|
|
}).then(() => {
|
|
|
|
|
getCateLists()
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
// 删除分组
|
|
|
|
|
const handleDeleteCate = (id: number) => {
|
|
|
|
|
apiFileCateDelete({
|
2022-04-13 09:38:53 +00:00
|
|
|
id
|
2022-04-08 02:42:44 +00:00
|
|
|
}).then(() => {
|
|
|
|
|
getCateLists()
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
// 获取分组列表
|
|
|
|
|
const getCateLists = () => {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
apiFileCateLists({
|
|
|
|
|
type: typeValue.value,
|
2022-04-13 09:38:53 +00:00
|
|
|
page_type: 1
|
2022-04-08 02:42:44 +00:00
|
|
|
}).then((res: any) => {
|
|
|
|
|
const item: any[] = [
|
|
|
|
|
{
|
2022-04-13 09:38:53 +00:00
|
|
|
name: '全部',
|
|
|
|
|
id: ''
|
2022-04-08 02:42:44 +00:00
|
|
|
},
|
|
|
|
|
{
|
2022-04-13 09:38:53 +00:00
|
|
|
name: '未分组',
|
|
|
|
|
id: 0
|
|
|
|
|
}
|
2022-04-08 02:42:44 +00:00
|
|
|
]
|
|
|
|
|
cateLists.value = res?.lists
|
|
|
|
|
cateLists.value.unshift(...item)
|
|
|
|
|
resolve(cateLists)
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
return {
|
|
|
|
|
cateId,
|
|
|
|
|
cateLists,
|
|
|
|
|
handleAddCate,
|
|
|
|
|
handleEditCate,
|
|
|
|
|
handleDeleteCate,
|
2022-04-13 09:38:53 +00:00
|
|
|
getCateLists
|
2022-04-08 02:42:44 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 处理文件的钩子函数
|
|
|
|
|
export function useFile(cateId: Ref<string>, type: Ref<any>, limit: Ref<number>) {
|
|
|
|
|
const moveId = ref(0)
|
|
|
|
|
const select: Ref<any[]> = ref([])
|
|
|
|
|
const fileParams = reactive({
|
2022-04-13 09:38:53 +00:00
|
|
|
name: '',
|
2022-04-08 02:42:44 +00:00
|
|
|
type: type,
|
2022-04-13 09:38:53 +00:00
|
|
|
cid: cateId
|
2022-04-08 02:42:44 +00:00
|
|
|
})
|
|
|
|
|
const { pager, requestApi, resetPage } = usePages({
|
|
|
|
|
callback: apiFileList,
|
|
|
|
|
params: fileParams
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const selectStatus = computed(
|
|
|
|
|
() => (id: number) => select.value.find((item: any) => item.id == id)
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const getFileList = () => {
|
|
|
|
|
requestApi()
|
|
|
|
|
}
|
|
|
|
|
const refresh = () => {
|
|
|
|
|
resetPage()
|
|
|
|
|
}
|
|
|
|
|
const batchFileDelete = (id?: number[]) => {
|
2022-04-08 06:46:31 +00:00
|
|
|
let ids = id ? id : select.value.map((item: any) => item.id)
|
2022-04-08 02:42:44 +00:00
|
|
|
apiFileDelete({
|
2022-04-13 09:38:53 +00:00
|
|
|
ids
|
|
|
|
|
}).then(res => {
|
2022-04-08 02:42:44 +00:00
|
|
|
getFileList()
|
|
|
|
|
clearSelect()
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
const batchFileMove = () => {
|
2022-04-08 06:46:31 +00:00
|
|
|
let ids = select.value.map((item: any) => item.id)
|
2022-04-08 02:42:44 +00:00
|
|
|
apiFileMove({
|
|
|
|
|
ids,
|
2022-04-18 07:44:18 +00:00
|
|
|
cid: moveId.value || 0
|
2022-04-13 09:38:53 +00:00
|
|
|
}).then(res => {
|
2022-04-08 02:42:44 +00:00
|
|
|
moveId.value = 0
|
|
|
|
|
getFileList()
|
|
|
|
|
clearSelect()
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const selectFile = (item: any) => {
|
2022-04-08 06:46:31 +00:00
|
|
|
let index = select.value.findIndex((items: any) => items.id == item.id)
|
2022-04-08 02:42:44 +00:00
|
|
|
if (index != -1) {
|
|
|
|
|
select.value.splice(index, 1)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if (select.value.length == limit.value) {
|
|
|
|
|
if (limit.value == 1) {
|
|
|
|
|
select.value = []
|
|
|
|
|
select.value.push(item)
|
|
|
|
|
return
|
|
|
|
|
}
|
2022-04-13 09:38:53 +00:00
|
|
|
ElMessage.warning('已达到选择上限')
|
2022-04-08 02:42:44 +00:00
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
select.value.push(item)
|
|
|
|
|
}
|
|
|
|
|
const clearSelect = () => {
|
|
|
|
|
select.value = []
|
|
|
|
|
}
|
|
|
|
|
const cancelSelete = (id: number) => {
|
2022-04-13 09:38:53 +00:00
|
|
|
select.value = select.value.filter(item => item.id != id)
|
2022-04-08 02:42:44 +00:00
|
|
|
}
|
|
|
|
|
return {
|
|
|
|
|
moveId,
|
|
|
|
|
pager,
|
|
|
|
|
fileParams,
|
|
|
|
|
select,
|
|
|
|
|
getFileList,
|
|
|
|
|
refresh,
|
|
|
|
|
batchFileDelete,
|
|
|
|
|
batchFileMove,
|
|
|
|
|
selectFile,
|
|
|
|
|
selectStatus,
|
|
|
|
|
clearSelect,
|
|
|
|
|
cancelSelete
|
|
|
|
|
}
|
|
|
|
|
}
|