文章管理——新增文章去除封面必上传限制,完善推荐管理和应用管理

This commit is contained in:
Double-_-Z 2025-01-15 20:26:45 +08:00
parent a75ff2af9a
commit 939afe16ec
3 changed files with 105 additions and 6 deletions

View File

@ -245,7 +245,7 @@ const articleFormRef = ref();
// //
const onSubmitForm = () => { const onSubmitForm = () => {
articleFormRef.value.validate((valid: boolean) => { articleFormRef.value.validate((valid: boolean) => {
if (valid && state.coverHide){ if (valid){
const form = {...state.data,top:state.data.top ? 1 : 0}; const form = {...state.data,top:state.data.top ? 1 : 0};
if(state.coverFile.type === undefined){ if(state.coverFile.type === undefined){
realSubmit(form); realSubmit(form);

View File

@ -321,7 +321,7 @@ onMounted(() => {
} }
.card-item-left{ .card-item-left{
width: 80px; width: 84px;
height: 80px; height: 80px;
img{ img{
width: 100%; width: 100%;

View File

@ -5,7 +5,7 @@
<!-- 发布者<el-input size="default" placeholder="请输入发布用户名称" v-model="state.tableData.param.userName" <!-- 发布者<el-input size="default" placeholder="请输入发布用户名称" v-model="state.tableData.param.userName"
class="ml10 mr10" style="max-width: 180px" clearable></el-input> --> class="ml10 mr10" style="max-width: 180px" clearable></el-input> -->
作品类型<el-select size="default" v-model="state.tableData.param.serviceName" placeholder="请选择作品类型" 作品类型<el-select size="default" v-model="state.tableData.param.serviceName" placeholder="请选择作品类型"
clearable class="ml10 mr10" style="max-width: 180px"> clearable class="ml10 mr10" style="max-width: 180px" filterable>
<el-option v-for="(item,index) in state.special.data" :key="index" :label="item.name" :value="item.name"></el-option> <el-option v-for="(item,index) in state.special.data" :key="index" :label="item.name" :value="item.name"></el-option>
</el-select> </el-select>
@ -21,7 +21,7 @@
</el-icon> </el-icon>
重置 重置
</el-button> </el-button>
<el-button size="default" type="success" class="ml10"> <el-button @click="state.recommend.show = true" size="default" type="success" class="ml10">
<el-icon> <el-icon>
<ele-FolderAdd /> <ele-FolderAdd />
</el-icon> </el-icon>
@ -82,6 +82,30 @@
</el-form> </el-form>
</div> </div>
</el-dialog> </el-dialog>
<!-- 添加推荐作品 -->
<el-dialog :title="state.recommend.title" v-model="state.recommend.show" width="400px">
<el-form v-loading="state.recommend.loading" ref="recommendFormRef" :model="state.recommend.form" :rules="state.recommend.rules" size="default" label-width="100px">
<el-row :gutter="35">
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
<el-form-item label="作品类型:" prop="serviceName">
<el-select size="default" v-model="state.recommend.form.serviceName" placeholder="请选择作品类型" clearable filterable>
<el-option v-for="(item,index) in state.special.data" :key="index" :label="item.name" :value="item.name"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="onCancel" size="default"> </el-button>
<el-button type="primary" @click="onSubmit" size="default"> </el-button>
</span>
</template>
</el-dialog>
<!-- 封面预览弹窗 -->
<el-dialog v-model="dialogVisible">
<img width="100%" w-full :src="dialogImageUrl" alt="预览" />
</el-dialog>
</div> </div>
</template> </template>
@ -89,7 +113,7 @@
import { defineAsyncComponent, onMounted, reactive, ref } from 'vue'; import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
import { recommendApi } from '/@/api/service/recommend'; import { recommendApi } from '/@/api/service/recommend';
import { applyApi } from '/@/api/service/apply'; import { applyApi } from '/@/api/service/apply';
import { ElMessage, ElMessageBox, TableColumnCtx } from 'element-plus'; import { ElMessage, ElMessageBox, TableColumnCtx, UploadFile } from 'element-plus';
// //
const state = reactive<any>({ const state = reactive<any>({
@ -114,7 +138,19 @@ const state = reactive<any>({
}, },
show: false, show: false,
title: '作品审核', title: '作品审核',
message: '', },
recommend: {
loading: false,
form: {},
rules: {
// photoSourceId: { required: true, message: '', trigger: 'blur' },
photoTargetId: { required: true, message: '请上传推荐作品', trigger: 'blur' },
serviceName: { required: true, message: '请选择作品类型', trigger: 'blur' },
},
show: false,
title: '新增推荐作品',
coverFile: {},
coverHide: false
} }
}); });
@ -122,6 +158,13 @@ const state = reactive<any>({
const redApi = recommendApi(); const redApi = recommendApi();
const aplApi = applyApi(); const aplApi = applyApi();
//
const dialogImageUrl = ref('');
const dialogVisible = ref(false);
//
const recommendFormRef = ref();
// //
const getSpecialList = async() => { const getSpecialList = async() => {
try { try {
@ -196,8 +239,61 @@ const reset = () =>{
getTableData(); getTableData();
} }
//
const closeDialog = () => {
setTimeout(() => {
state.recommend.show = false;
state.recommend.form = {};
handleRemove();
}, 300)
};
//
const onCancel = () => {
closeDialog();
};
//
const handleRemove = (file?: UploadFile) => {
state.recommend.coverFile = {};
// uploadRef.value.clearFiles();
state.recommend.coverHide = false;
}
//
const handlePictureCardPreview = (file: UploadFile) => {
dialogImageUrl.value = file.url!
dialogVisible.value = true
}
const replayFormRef = ref(); const replayFormRef = ref();
//
const onSubmit = () => {
recommendFormRef.value.validate(async(valid: boolean) => {
if (valid && state.coverHide){
try {
state.recommend.loading = true;
let res = await redApi.saveRecommend(state.recommend.form);
if(res?.success){
ElMessage.success('推荐作品新增成功!');
closeDialog(); //
state.tableData.param.current = 1;
getTableData();
}else{
ElMessage.error('推荐作品新增失败!');
}
} catch (error) {
ElMessage.error('处理失败!');
} finally {
state.recommend.loading = false;
}
}else{
ElMessage.error('请完善信息!');
}
});
};
// //
const toPublic = (row: any) => { const toPublic = (row: any) => {
ElMessageBox.confirm('确定要取消该作品推荐吗?', '提示', { ElMessageBox.confirm('确定要取消该作品推荐吗?', '提示', {
@ -265,6 +361,9 @@ onMounted(() => {
} }
} }
} }
.iconImg :deep(.hide .el-upload--picture-card) {
display: none;
}
.dialog-content{ .dialog-content{
padding: 0; padding: 0;
display: flex; display: flex;