提交代码

This commit is contained in:
jiangzhe 2024-06-18 15:30:22 +08:00
parent 655de1de86
commit 94f6a0b87d
3 changed files with 86 additions and 89 deletions

View File

@ -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'
}); });
} }

View File

@ -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;
} }

View File

@ -331,8 +331,8 @@ 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';
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) => {