提交代码
This commit is contained in:
parent
655de1de86
commit
94f6a0b87d
|
@ -76,7 +76,7 @@ export function pageTextbook(query: any): AxiosPromise<any[]> {
|
||||||
|
|
||||||
export function awaitTexbookList(query: any): AxiosPromise<any[]> {
|
export function awaitTexbookList(query: any): AxiosPromise<any[]> {
|
||||||
return request({
|
return request({
|
||||||
url: '/file/textbook/awaitList',
|
url: '/file/textbook/await/pageList',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: query
|
params: query
|
||||||
});
|
});
|
||||||
|
@ -90,6 +90,14 @@ export const addTextbook = (data: any) => {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const addResource = (data: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/file/resource',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export function pageResource(query: any): AxiosPromise<any[]> {
|
export function pageResource(query: any): AxiosPromise<any[]> {
|
||||||
return request({
|
return request({
|
||||||
url: '/file/resource/pageList',
|
url: '/file/resource/pageList',
|
||||||
|
@ -122,9 +130,16 @@ export const move = (data: any) => {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function delTextbook(ossId: string | number | Array<string | number>) {
|
export function delTextbook(id: string | number | Array<string | number>) {
|
||||||
return request({
|
return request({
|
||||||
url: '/file/textbook/' + ossId,
|
url: '/file/textbook/' + id,
|
||||||
|
method: 'delete'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function delResource(id: string | number | Array<string | number>) {
|
||||||
|
return request({
|
||||||
|
url: '/file/resource/' + id,
|
||||||
method: 'delete'
|
method: 'delete'
|
||||||
});
|
});
|
||||||
}
|
}
|
|
@ -61,12 +61,12 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-if="showTable" v-loading="loading" :data="ossList" :header-cell-class-name="handleHeaderClass"
|
<el-table v-if="showTable" v-loading="loading" :data="ossList" :header-cell-class-name="handleHeaderClass"
|
||||||
@selection-change="handleSelectionChange" @header-click="handleHeaderCLick">
|
@selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
<el-table-column label="课件名" align="center" prop="fileName" width="240" />
|
<el-table-column label="课件名" align="center" prop="fileName" width="240" />
|
||||||
<el-table-column label="课件格式" align="center" prop="fileSuffix" />
|
<el-table-column label="课件格式" align="center" prop="fileSuffix" />
|
||||||
<el-table-column label="课件大小" align="center" prop="fileSuffix" />
|
<el-table-column label="课件大小" align="center" prop="volume" />
|
||||||
<el-table-column label="创建人" align="center" prop="createByName" />
|
<el-table-column label="创建人" align="center" prop="createBy" />
|
||||||
<el-table-column label="创建时间" align="center" prop="createTime">
|
<el-table-column label="创建时间" align="center" prop="createTime">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||||
|
@ -76,11 +76,12 @@
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
|
|
||||||
<el-tooltip v-if="isAudit" content="审核通过" placement="top">
|
<el-tooltip v-if="isAudit" content="审核通过" placement="top">
|
||||||
<el-button link type="primary" icon="CopyDocument" @click="handleDownload(scope.row)">审核通过</el-button>
|
<el-button link type="primary" icon="CopyDocument"
|
||||||
|
@click="handleAuditBtn(scope.row, 1)">审核通过</el-button>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip v-if="isAudit" content="审核不通过" placement="top">
|
<el-tooltip v-if="isAudit" content="审核不通过" placement="top">
|
||||||
<el-button link type="primary" icon="DocumentCopy"
|
<el-button link type="primary" icon="DocumentCopy"
|
||||||
@click="handleDownload(scope.row)">审核不通过</el-button>
|
@click="handleAuditBtn(scope.row, 0)">审核不通过</el-button>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
|
|
||||||
<el-tooltip content="预览" placement="top">
|
<el-tooltip content="预览" placement="top">
|
||||||
|
@ -180,12 +181,12 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Oss" lang="ts">
|
<script setup name="Oss" lang="ts">
|
||||||
import { pageResource, preview, previewTxt, delOss, addTextbook } from '@/api/system/oss';
|
import { pageResource, awaitTexbookList, preview, previewTxt, delResource, addResource, review, copy, move } from '@/api/system/oss';
|
||||||
import ImagePreview from '@/components/ImagePreview/index.vue';
|
import ImagePreview from '@/components/ImagePreview/index.vue';
|
||||||
import FileMd5Upload from '@/components/FileMd5Upload/index.vue';
|
import FileMd5Upload from '@/components/FileMd5Upload/index.vue';
|
||||||
import { OssForm, OssQuery, OssVO } from '@/api/system/oss/types';
|
import { OssForm, OssQuery, OssVO } from '@/api/system/oss/types';
|
||||||
import { listCatalogTextbook } from "@/api/resource/catalogTextbook";
|
import { listCatalogResource } from "@/api/resource/catalogResource";
|
||||||
import { CatalogResourceVO } from '@/api/resource/catalogResource/types';
|
import { CatalogTextbookVO } from '@/api/resource/catalogTextbook/types';
|
||||||
|
|
||||||
//引入VueOfficeDocx组件
|
//引入VueOfficeDocx组件
|
||||||
import VueOfficeDocx from '@vue-office/docx'
|
import VueOfficeDocx from '@vue-office/docx'
|
||||||
|
@ -239,7 +240,6 @@ const formatOptions = [
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
const catalogRadio = ref('1')
|
|
||||||
const defaultProps = {
|
const defaultProps = {
|
||||||
children: 'children',
|
children: 'children',
|
||||||
label: 'catalogName',
|
label: 'catalogName',
|
||||||
|
@ -247,7 +247,7 @@ const defaultProps = {
|
||||||
|
|
||||||
const isUpload = ref(false)
|
const isUpload = ref(false)
|
||||||
const currentNode = ref<any>({})
|
const currentNode = ref<any>({})
|
||||||
const treeData = ref<CatalogResourceVO[]>([])
|
const treeData = ref<CatalogTextbookVO[]>([])
|
||||||
|
|
||||||
const ossList = ref<OssVO[]>([]);
|
const ossList = ref<OssVO[]>([]);
|
||||||
const showTable = ref(true);
|
const showTable = ref(true);
|
||||||
|
@ -276,7 +276,7 @@ const treeMoveDialog = reactive<DialogOption>({
|
||||||
title: '移动'
|
title: '移动'
|
||||||
});
|
});
|
||||||
const treeMoveFormRef = ref()
|
const treeMoveFormRef = ref()
|
||||||
const treeMoveForm = ref<any>({ catalogId: '' });
|
const treeMoveForm = ref<any>({ id: '', catalogId: '' });
|
||||||
const treeMoveRules = ref({
|
const treeMoveRules = ref({
|
||||||
catalogId: [{ required: true, message: '请选择', trigger: 'blur' }]
|
catalogId: [{ required: true, message: '请选择', trigger: 'blur' }]
|
||||||
})
|
})
|
||||||
|
@ -286,7 +286,7 @@ const treeCopyDialog = reactive<DialogOption>({
|
||||||
title: '复制'
|
title: '复制'
|
||||||
});
|
});
|
||||||
const treeCopyFormRef = ref()
|
const treeCopyFormRef = ref()
|
||||||
const treeCopyForm = ref<any>({ catalogId: '' });
|
const treeCopyForm = ref<any>({ id: '', catalogId: '' });
|
||||||
const treeCopyRules = ref({
|
const treeCopyRules = ref({
|
||||||
catalogId: [{ required: true, message: '请选择', trigger: 'blur' }]
|
catalogId: [{ required: true, message: '请选择', trigger: 'blur' }]
|
||||||
})
|
})
|
||||||
|
@ -309,6 +309,7 @@ const data = reactive<PageData<OssForm, OssQuery>>({
|
||||||
fileSuffix: '',
|
fileSuffix: '',
|
||||||
createTime: '',
|
createTime: '',
|
||||||
service: '',
|
service: '',
|
||||||
|
catalogId: '',
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
file: [{ required: true, message: '文件不能为空', trigger: 'blur' }]
|
file: [{ required: true, message: '文件不能为空', trigger: 'blur' }]
|
||||||
|
@ -322,18 +323,18 @@ const getList = async () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
const res = await proxy?.getConfigKey('sys.oss.previewListResource');
|
const res = await proxy?.getConfigKey('sys.oss.previewListResource');
|
||||||
previewListResource.value = res?.data === undefined ? true : res.data === 'true';
|
previewListResource.value = res?.data === undefined ? true : res.data === 'true';
|
||||||
const response = await pageResource(queryParams.value);
|
let response
|
||||||
|
if (isAudit.value) {
|
||||||
|
response = await awaitTexbookList(queryParams.value);
|
||||||
|
} else {
|
||||||
|
response = await pageResource(queryParams.value);
|
||||||
|
}
|
||||||
ossList.value = response.rows;
|
ossList.value = response.rows;
|
||||||
total.value = response.total;
|
total.value = response.total;
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
showTable.value = true;
|
showTable.value = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
function checkFileSuffix(fileSuffix: string | string[]) {
|
|
||||||
const arr = [".png", ".jpg", ".jpeg"];
|
|
||||||
const suffixArray = Array.isArray(fileSuffix) ? fileSuffix : [fileSuffix];
|
|
||||||
return suffixArray.some(suffix => arr.includes(suffix.toLowerCase()));
|
|
||||||
}
|
|
||||||
/** 取消按钮 */
|
/** 取消按钮 */
|
||||||
function cancel() {
|
function cancel() {
|
||||||
dialog.visible = false;
|
dialog.visible = false;
|
||||||
|
@ -434,7 +435,7 @@ const handleFileName = (val) => {
|
||||||
const submitForm = async () => {
|
const submitForm = async () => {
|
||||||
const ossId = form.value.file
|
const ossId = form.value.file
|
||||||
const catalogId = currentNode.value.catalogId
|
const catalogId = currentNode.value.catalogId
|
||||||
await addTextbook({ ossId, catalogId, fileName: fileName.value, type: catalogRadio.value })
|
await addResource({ ossId, catalogId, fileName: fileName.value })
|
||||||
dialog.visible = false;
|
dialog.visible = false;
|
||||||
getList();
|
getList();
|
||||||
};
|
};
|
||||||
|
@ -443,6 +444,11 @@ const submitMoveForm = () => {
|
||||||
treeMoveFormRef.value?.validate(async (valid: boolean) => {
|
treeMoveFormRef.value?.validate(async (valid: boolean) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
treeMoveDialog.visible = false;
|
treeMoveDialog.visible = false;
|
||||||
|
const res = await move(treeMoveForm.value)
|
||||||
|
if (res.code === 200) {
|
||||||
|
proxy?.$modal.msgSuccess("移动成功")
|
||||||
|
await getList()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -455,6 +461,11 @@ const submitCopyForm = () => {
|
||||||
treeCopyFormRef.value?.validate(async (valid: boolean) => {
|
treeCopyFormRef.value?.validate(async (valid: boolean) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
treeCopyDialog.visible = false
|
treeCopyDialog.visible = false
|
||||||
|
const res = await copy(treeCopyForm.value)
|
||||||
|
if (res.code === 200) {
|
||||||
|
proxy?.$modal.msgSuccess("复制成功")
|
||||||
|
await getList()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -463,37 +474,40 @@ const cancelCopy = () => {
|
||||||
treeCopyDialog.visible = false
|
treeCopyDialog.visible = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 0审核不通过 1审核通过
|
||||||
|
const handleAuditBtn = async (row: any, status: number) => {
|
||||||
|
const id = row?.id
|
||||||
|
const fileName = row?.fileName
|
||||||
|
const title = status === 1 ? `是否审核通过${fileName}?` : `是否审核不通过${fileName}?`
|
||||||
|
await proxy?.$modal.confirm(title).finally(() => loading.value = false)
|
||||||
|
await review({ id, status })
|
||||||
|
proxy?.$modal.msgSuccess(status === 1 ? "审核通过" : '审核不通过');
|
||||||
|
await getList();
|
||||||
|
}
|
||||||
|
|
||||||
/** 下载按钮操作 */
|
/** 下载按钮操作 */
|
||||||
const handleDownload = (row: OssVO) => {
|
const handleDownload = (row: OssVO) => {
|
||||||
proxy?.$download.oss(row.ossId);
|
proxy?.$download.oss(row.ossId);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleMove = (row: OssVO) => {
|
const handleMove = async (row: any) => {
|
||||||
treeMoveDialog.visible = true
|
treeMoveDialog.visible = true
|
||||||
|
treeMoveForm.value.id = row.id
|
||||||
|
treeMoveForm.value.catalogId = currentNode.value.catalogId
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleCopy = (row: OssVO) => {
|
const handleCopy = (row: any) => {
|
||||||
treeCopyDialog.visible = true
|
treeCopyDialog.visible = true
|
||||||
|
treeCopyForm.value.id = row.id
|
||||||
|
treeCopyForm.value.catalogId = currentNode.value.catalogId
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 用户状态修改 */
|
|
||||||
const handlePreviewListResource = async (preview: boolean) => {
|
|
||||||
let text = preview ? '启用' : '停用';
|
|
||||||
try {
|
|
||||||
await proxy?.$modal.confirm('确认要"' + text + '""预览列表图片"配置吗?');
|
|
||||||
await proxy?.updateConfigByKey('sys.oss.previewListResource', preview);
|
|
||||||
await getList();
|
|
||||||
proxy?.$modal.msgSuccess(text + '成功');
|
|
||||||
} catch {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
const handleDelete = async (row?: OssVO) => {
|
const handleDelete = async (row?: any) => {
|
||||||
const ossIds = row?.ossId || ids.value;
|
const delIds = row?.id || ids.value;
|
||||||
await proxy?.$modal.confirm('是否确认删除OSS对象存储编号为"' + ossIds + '"的数据项?');
|
await proxy?.$modal.confirm('是否确认删除OSS对象存储编号为"' + delIds + '"的数据项?');
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
await delOss(ossIds).finally(() => (loading.value = false));
|
await delResource(delIds).finally(() => (loading.value = false));
|
||||||
await getList();
|
await getList();
|
||||||
proxy?.$modal.msgSuccess('删除成功');
|
proxy?.$modal.msgSuccess('删除成功');
|
||||||
};
|
};
|
||||||
|
@ -511,6 +525,9 @@ const handleNode = (node: any) => {
|
||||||
isTree.value = true
|
isTree.value = true
|
||||||
isUpload.value = true
|
isUpload.value = true
|
||||||
currentNode.value = node
|
currentNode.value = node
|
||||||
|
|
||||||
|
queryParams.value.catalogId = node.catalogId
|
||||||
|
getList()
|
||||||
}
|
}
|
||||||
|
|
||||||
const options = ref({
|
const options = ref({
|
||||||
|
@ -552,10 +569,10 @@ const handlePreview = async (row: OssVO) => {
|
||||||
|
|
||||||
const treeLoading = ref(false)
|
const treeLoading = ref(false)
|
||||||
/** 查询目录-同步教材列表 */
|
/** 查询目录-同步教材列表 */
|
||||||
const getListCatalogTextbook = async () => {
|
const getlistCatalogResource = async () => {
|
||||||
treeLoading.value = true;
|
treeLoading.value = true;
|
||||||
const res = await listCatalogTextbook();
|
const res = await listCatalogResource();
|
||||||
const data = proxy?.handleTree<CatalogResourceVO>(res.data, "catalogId", "parentId");
|
const data = proxy?.handleTree<CatalogTextbookVO>(res.data, "catalogId", "parentId");
|
||||||
if (data) {
|
if (data) {
|
||||||
treeData.value = data;
|
treeData.value = data;
|
||||||
treeLoading.value = false;
|
treeLoading.value = false;
|
||||||
|
@ -564,7 +581,7 @@ const getListCatalogTextbook = async () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getListCatalogTextbook()
|
getlistCatalogResource()
|
||||||
getList();
|
getList();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
@ -591,11 +608,6 @@ onMounted(() => {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.line {
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
margin: 10px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-audit {
|
.btn-audit {
|
||||||
text-indent: 1em;
|
text-indent: 1em;
|
||||||
}
|
}
|
||||||
|
|
|
@ -332,7 +332,7 @@ const getList = async () => {
|
||||||
const res = await proxy?.getConfigKey('sys.oss.previewListResource');
|
const res = await proxy?.getConfigKey('sys.oss.previewListResource');
|
||||||
previewListResource.value = res?.data === undefined ? true : res.data === 'true';
|
previewListResource.value = res?.data === undefined ? true : res.data === 'true';
|
||||||
let response
|
let response
|
||||||
if(isAudit.value) {
|
if (isAudit.value) {
|
||||||
response = await awaitTexbookList(queryParams.value);
|
response = await awaitTexbookList(queryParams.value);
|
||||||
} else {
|
} else {
|
||||||
response = await pageTextbook(queryParams.value);
|
response = await pageTextbook(queryParams.value);
|
||||||
|
@ -379,24 +379,7 @@ function handleSelectionChange(selection: OssVO[]) {
|
||||||
const handleHeaderClass = ({ column }: any): any => {
|
const handleHeaderClass = ({ column }: any): any => {
|
||||||
column.order = column.multiOrder;
|
column.order = column.multiOrder;
|
||||||
};
|
};
|
||||||
/** 点击表头进行排序 */
|
|
||||||
const handleHeaderCLick = (column: any) => {
|
|
||||||
if (column.sortable !== 'custom') {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
switch (column.multiOrder) {
|
|
||||||
case 'descending':
|
|
||||||
column.multiOrder = 'ascending';
|
|
||||||
break;
|
|
||||||
case 'ascending':
|
|
||||||
column.multiOrder = '';
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
column.multiOrder = 'descending';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
handleOrderChange(column.property, column.multiOrder);
|
|
||||||
};
|
|
||||||
const handleOrderChange = (prop: string, order: string) => {
|
const handleOrderChange = (prop: string, order: string) => {
|
||||||
let orderByArr = queryParams.value.orderByColumn ? queryParams.value.orderByColumn.split(',') : [];
|
let orderByArr = queryParams.value.orderByColumn ? queryParams.value.orderByColumn.split(',') : [];
|
||||||
let isAscArr = queryParams.value.isAsc ? queryParams.value.isAsc.split(',') : [];
|
let isAscArr = queryParams.value.isAsc ? queryParams.value.isAsc.split(',') : [];
|
||||||
|
@ -420,10 +403,7 @@ const handleOrderChange = (prop: string, order: string) => {
|
||||||
queryParams.value.isAsc = isAscArr.join(',');
|
queryParams.value.isAsc = isAscArr.join(',');
|
||||||
getList();
|
getList();
|
||||||
};
|
};
|
||||||
/** 任务日志列表查询 */
|
|
||||||
const handleOssConfig = () => {
|
|
||||||
router.push('/system/oss-config/index');
|
|
||||||
};
|
|
||||||
/** 文件按钮操作 */
|
/** 文件按钮操作 */
|
||||||
const handleFile = () => {
|
const handleFile = () => {
|
||||||
reset();
|
reset();
|
||||||
|
@ -515,24 +495,12 @@ const handleCopy = (row: any) => {
|
||||||
treeCopyForm.value.catalogId = currentNode.value.catalogId
|
treeCopyForm.value.catalogId = currentNode.value.catalogId
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 用户状态修改 */
|
|
||||||
const handlePreviewListResource = async (preview: boolean) => {
|
|
||||||
let text = preview ? '启用' : '停用';
|
|
||||||
try {
|
|
||||||
await proxy?.$modal.confirm('确认要"' + text + '""预览列表图片"配置吗?');
|
|
||||||
await proxy?.updateConfigByKey('sys.oss.previewListResource', preview);
|
|
||||||
await getList();
|
|
||||||
proxy?.$modal.msgSuccess(text + '成功');
|
|
||||||
} catch {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
const handleDelete = async (row?: OssVO) => {
|
const handleDelete = async (row?: any) => {
|
||||||
const ossIds = row?.ossId || ids.value;
|
const delIds = row?.id || ids.value;
|
||||||
await proxy?.$modal.confirm('是否确认删除OSS对象存储编号为"' + ossIds + '"的数据项?');
|
await proxy?.$modal.confirm('是否确认删除OSS对象存储编号为"' + delIds + '"的数据项?');
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
await delTextbook(ossIds).finally(() => (loading.value = false));
|
await delTextbook(delIds).finally(() => (loading.value = false));
|
||||||
await getList();
|
await getList();
|
||||||
proxy?.$modal.msgSuccess('删除成功');
|
proxy?.$modal.msgSuccess('删除成功');
|
||||||
};
|
};
|
||||||
|
@ -542,6 +510,8 @@ const isTree = ref(false)
|
||||||
const handleAudit = () => {
|
const handleAudit = () => {
|
||||||
isAudit.value = true
|
isAudit.value = true
|
||||||
isTree.value = false
|
isTree.value = false
|
||||||
|
|
||||||
|
getList()
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleNode = (node: any) => {
|
const handleNode = (node: any) => {
|
||||||
|
|
Loading…
Reference in New Issue