新增文章图集功能

This commit is contained in:
zjl 2024-09-19 10:54:15 +08:00
parent 5babfa0c06
commit de381654c3
2 changed files with 55 additions and 25 deletions

View File

@ -50,6 +50,14 @@
<template v-slot:tip>支持扩展名: jpg png jpeg;文件大小不超过200M</template> <template v-slot:tip>支持扩展名: jpg png jpeg;文件大小不超过200M</template>
</UploadImg> </UploadImg>
</el-form-item> </el-form-item>
<el-form-item
label="文章图集"
prop="imagesList"
:rules="{ required: true,message: '请上传文章图集', trigger: 'change' }"
>
<UploadImgs @upload="fileUploads" file-type=".jpeg,.png,.jpg,.gif" name="article"
:fileSize="200" :multiple="true" :fileList="formData.fileList"/>
</el-form-item>
<el-form-item label="导读" prop="intro" :rules="{ required: true, message: '请输入导读', trigger: 'blur' }"> <el-form-item label="导读" prop="intro" :rules="{ required: true, message: '请输入导读', trigger: 'blur' }">
<el-input placeholder="请输入" v-model="formData.intro" type="textarea"></el-input> <el-input placeholder="请输入" v-model="formData.intro" type="textarea"></el-input>
</el-form-item> </el-form-item>
@ -81,6 +89,7 @@ import {computed, onMounted,ref,shallowRef,reactive } from "vue";
import {FormInstance} from "element-plus"; import {FormInstance} from "element-plus";
const formRef = shallowRef<FormInstance>(); const formRef = shallowRef<FormInstance>();
import UploadImg from "@/components/Upload/Image.vue"; import UploadImg from "@/components/Upload/Image.vue";
import UploadImgs from '@/components/Upload/Images.vue';
import {useLockFn} from "@/utils/useLockFn"; import {useLockFn} from "@/utils/useLockFn";
import Editor from '@/components/Editor/tinymce.vue' import Editor from '@/components/Editor/tinymce.vue'
import {message,buildTree} from "@/utils/auth"; import {message,buildTree} from "@/utils/auth";
@ -116,11 +125,15 @@ const formData = reactive({
title: "", title: "",
author: "", author: "",
cover:'', cover:'',
images: '',
intro:'', intro:'',
content:'', content:'',
status:0, status:0,
click:'', click:'',
sort:0 sort:0,
imagesList:[],
filePath:'',
fileList:[],
}); });
const dialogClose = () => { const dialogClose = () => {
@ -135,12 +148,29 @@ const setFormData = async (row: any) => {
} }
} }
editorRef.value.myValue=formData.content editorRef.value.myValue=formData.content
//
if (formData.imagesList) {
formData.imagesList.map(item=>{
formData.fileList.push({
filePath:item
})
})
}
}; };
const editorRef=ref() const editorRef=ref()
const fileUploads = (list: any) => {
formData.fileList = list
};
const handleSubmit = async () => { const handleSubmit = async () => {
await formRef.value?.validate(); await formRef.value?.validate();
//
formData.images =''
formData.fileList.map((item,index)=>{
formData.images+=`${item.filePath}${index<formData.fileList.length-1?',':''}`
})
let ruleForm = JSON.parse(JSON.stringify(formData)); let ruleForm = JSON.parse(JSON.stringify(formData));
ruleForm.content=editorRef.value.myValue ruleForm.content=editorRef.value.myValue
if (!ruleForm.content) { if (!ruleForm.content) {

View File

@ -68,30 +68,30 @@
:format="formData.type == 'date' ? 'YYYY-MM-DD' : 'YYYY-MM-DD HH:mm:ss'" /> :format="formData.type == 'date' ? 'YYYY-MM-DD' : 'YYYY-MM-DD HH:mm:ss'" />
</template> </template>
<template v-else-if="formData.type == 'image'"> <template v-else-if="formData.type == 'image'">
<UploadImg <UploadImg
@changeFileName="(name)=>formData.fileName=name" @changeFileName="(name)=>formData.fileName=name"
:fileType=" ['image/jpeg', 'image/png', 'image/jpg', 'image/gif']" :fileType=" ['image/jpeg', 'image/png', 'image/jpg', 'image/gif']"
name="config" name="config"
:fileSize="200" :fileSize="200"
v-model:image-url="formData.filePath"> v-model:image-url="formData.filePath">
<template v-slot:tip>支持扩展名: jpg png jpeg;文件大小不超过200M</template> <template v-slot:tip>支持扩展名: jpg png jpeg;文件大小不超过200M</template>
</UploadImg> </UploadImg>
</template> </template>
<template v-else-if="formData.type == 'images'"> <template v-else-if="formData.type == 'images'">
<UploadImgs @upload="fileUploads" file-type=".jpeg,.png,.jpg,.gif" name="config" <UploadImgs @upload="fileUploads" file-type=".jpeg,.png,.jpg,.gif" name="config"
:fileSize="200" :multiple="true" :fileList="formData.fileList"/> :fileSize="200" :multiple="true" :fileList="formData.fileList"/>
</template> </template>
<template v-else-if="formData.type == 'file'"> <template v-else-if="formData.type == 'file'">
<UploadFile @upload="fileUploadFile" file-type=".xlsx.xls.doc.docx" name="config" <UploadFile @upload="fileUploadFile" file-type=".xlsx.xls.doc.docx" name="config"
:file-list="formData.filePath?[{name:formData.fileName,url:formData.filePath}]:[]"/> :file-list="formData.filePath?[{name:formData.fileName,url:formData.filePath}]:[]"/>
</template> </template>
<template v-else-if="formData.type == 'files'"> <template v-else-if="formData.type == 'files'">
<UploadFile @upload="fileUploads" file-type=".xlsx.xls.doc.docx" name="config" :multiple="true" <UploadFile @upload="fileUploads" file-type=".xlsx.xls.doc.docx" name="config" :multiple="true"
:file-list="formData.fileList"/> :file-list="formData.fileList"/>
</template> </template>
<template v-else-if="formData.type == 'ueditor'"> <template v-else-if="formData.type == 'ueditor'">
<Editor ref="editorRef" :height="fwbHeight" class="flex-1" name="config"/> <Editor ref="editorRef" :height="fwbHeight" class="flex-1" name="config"/>
</template> </template>
</el-form-item> </el-form-item>
<el-form-item label="排序" prop="sort"> <el-form-item label="排序" prop="sort">
<el-input-number v-model="formData.sort" /> <el-input-number v-model="formData.sort" />