Commit 008a4d93 authored by 冷玲鹏's avatar 冷玲鹏

修改字段:权重,状态

parent 060b4d61
...@@ -118,12 +118,12 @@ ...@@ -118,12 +118,12 @@
<el-link type="primary" @click="handleClick(scope.row)">{{ scope.row.applicationCount || 0 }}</el-link> <el-link type="primary" @click="handleClick(scope.row)">{{ scope.row.applicationCount || 0 }}</el-link>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="排序" prop="weight" :show-overflow-tooltip="true" min-width="55"> <el-table-column label="权重" prop="weight" :show-overflow-tooltip="true" min-width="55">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.weight || '-' }} {{ scope.row.weight || '-' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="releaseStatus" label="发布状态" min-width="80" show-overflow-tooltip> <el-table-column align="center" prop="releaseStatus" label="状态" min-width="80" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<el-switch <el-switch
v-model="scope.row.flag" v-model="scope.row.flag"
...@@ -152,12 +152,12 @@ ...@@ -152,12 +152,12 @@
<span>{{ scope.row.publishDate }}</span> <span>{{ scope.row.publishDate }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="startTime" label="结束时间" min-width="120" show-overflow-tooltip> <el-table-column align="center" prop="startTime" label="开始时间" min-width="180" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.startTime }}</span> <span>{{ scope.row.startTime }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="endTime" label="发布日期" min-width="120" show-overflow-tooltip> <el-table-column align="center" prop="endTime" label="结束时间" min-width="180" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.endTime }}</span> <span>{{ scope.row.endTime }}</span>
</template> </template>
......
...@@ -64,6 +64,43 @@ ...@@ -64,6 +64,43 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item
label="开放报名:"
prop="isRegistration"
:rules="{ required: !(controls.isOperation === '3'), message: '请选择是否需要实名认证', trigger: 'change' }"
>
<el-select
v-model="form.isRegistration"
placeholder="请选择是否需要报名"
size="small"
class="normalInput"
:disabled="secondFromDisabled"
>
<el-option v-for="item in yesOrNo" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="是否实名:"
prop="isAuthentication"
:rules="{ required: !(controls.isOperation === '3'), message: '请选择是否需要实名认证', trigger: 'change' }"
>
<el-select
v-model="form.isAuthentication"
placeholder="请选择是否需要实名认证"
size="small"
class="normalInput"
:disabled="secondFromDisabled"
>
<el-option v-for="item in yesOrNo" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item
...@@ -84,7 +121,7 @@ ...@@ -84,7 +121,7 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item
label="排序:" label="权重:"
prop="weight" prop="weight"
:rules="{ required: !(controls.isOperation === '3'), message: '请选择排序号', trigger: 'change' }" :rules="{ required: !(controls.isOperation === '3'), message: '请选择排序号', trigger: 'change' }"
> >
...@@ -99,140 +136,91 @@ ...@@ -99,140 +136,91 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row :gutter="20">
<el-col :span="8"> <el-col :span="12">
<el-form-item label="活动封面:">
<el-upload
accept=".png,.jpg,.jpeg,.PNG,.JPG,.JPEG"
:disabled="secondFromDisabled"
class="avatar-uploader"
action="#"
:http-request="handleUpload"
:show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
>
<img v-if="imageUrl" :src="imageUrl" style="height: 200px;width: 200px">
<i v-else class="el-icon-plus avatar-uploader-icon" />
</el-upload>
</el-form-item>
</el-col>
</el-row>
<!-- <el-row>
<el-col :span="24">
<el-form-item <el-form-item
label="活动摘要:" label="开始时间:"
prop="summary" prop="startTime"
:rules="{ required: !(controls.isOperation === '3'), message: '请输入活动简介', trigger: 'blur' }" :rules="{ required: !(controls.isOperation === '3'), message: '请选择开始时间', trigger: 'blur' }"
> >
<el-input <el-date-picker
v-model.trim="form.summary" v-model="form.startTime"
type="textarea" type="datetime"
placeholder="选择开始时间"
:disabled="secondFromDisabled" :disabled="secondFromDisabled"
placeholder="请输入活动摘要"
size="small" size="small"
rows="3"
class="normalInput" class="normalInput"
:maxlength="300" value-format="yyyy-MM-dd HH:mm"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>--> <el-col :span="12">
<el-row>
<el-col :span="24">
<el-form-item <el-form-item
label="活动内容:" label="结束时间:"
prop="details" prop="endTime"
:rules="{ required: !(controls.isOperation === '3'), message: '请输入活动内容', trigger: 'blur' }" :rules="{ required: !(controls.isOperation === '3'), message: '请选择结束时间', trigger: 'blur' }"
> >
<vue-editor <el-date-picker
id="editorsay" v-model="form.endTime"
v-model="form.details" type="datetime"
:use-custom-image-handler="true" placeholder="选择结束时间"
:editor-toolbar="customToolbar"
:disabled="secondFromDisabled" :disabled="secondFromDisabled"
@blur="queryRules" size="small"
@image-added="handleImageAdded" class="normalInput"
value-format="yyyy-MM-dd HH:mm"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item
label="开放报名:" label="男生数量:"
prop="isRegistration" prop="maleCount"
:rules="{ required: !(controls.isOperation === '3'), message: '请选择是否需要实名认证', trigger: 'change' }"
> >
<el-select <el-input
v-model="form.isRegistration" v-model.trim="form.maleCount"
placeholder="请选择是否需要报名"
size="small"
class="normalInput"
:disabled="secondFromDisabled" :disabled="secondFromDisabled"
> placeholder="请输入男生数量"
<el-option v-for="item in yesOrNo" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="是否实名:"
prop="isAuthentication"
:rules="{ required: !(controls.isOperation === '3'), message: '请选择是否需要实名认证', trigger: 'change' }"
>
<el-select
v-model="form.isAuthentication"
placeholder="请选择是否需要实名认证"
size="small" size="small"
class="normalInput" class="normalInput"
:disabled="secondFromDisabled" :maxlength="100"
> />
<el-option v-for="item in yesOrNo" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item
label="开始时间:" label="女生数量:"
prop="startTime" prop="femaleCount"
:rules="{ required: !(controls.isOperation === '3'), message: '请选择开始时间', trigger: 'blur' }"
> >
<el-date-picker <el-input
v-model="form.releaseDate" v-model.trim="form.femaleCount"
type="date"
placeholder="选择发布日期"
:disabled="secondFromDisabled" :disabled="secondFromDisabled"
placeholder="请女生数量"
size="small" size="small"
class="normalInput" class="normalInput"
value-format="yyyy-MM-dd" :maxlength="100"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item
label="结束时间:" label="人数上限:"
prop="endTime" prop="maximumApplication"
:rules="{ required: !(controls.isOperation === '3'), message: '请选择结束时间', trigger: 'blur' }" :rules="{ required: !(controls.isOperation === '3'), message: '请输入人数上限', trigger: 'blur' }"
> >
<el-date-picker <el-input
v-model="form.releaseDate" v-model.trim="form.maximumApplication"
type="date"
placeholder="选择发布日期"
:disabled="secondFromDisabled" :disabled="secondFromDisabled"
placeholder="请输入人数上限"
size="small" size="small"
class="normalInput" class="normalInput"
value-format="yyyy-MM-dd" :maxlength="100"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item
label="报名费用:" label="报名费用:"
...@@ -254,6 +242,91 @@ ...@@ -254,6 +242,91 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item
label="是否会员:"
prop="sNeedMember"
:rules="{ required: !(controls.isOperation === '3'), message: '请选择是否会员', trigger: 'change' }"
>
<el-select
v-model="form.sNeedMember"
placeholder="请选择是否会员"
size="small"
class="normalInput"
:disabled="secondFromDisabled"
>
<el-option v-for="item in yesOrNo" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="活动封面:" prop="pictureId">
<el-upload
accept=".png,.jpg,.jpeg,.PNG,.JPG,.JPEG"
:disabled="secondFromDisabled"
:file-list="fileList"
class="avatar-uploader"
list-type="picture-card"
action="#"
:on-preview="handlePreview"
:on-remove="handleUploadRemoveFake"
:on-exceed="handleUploadExceed"
:before-upload="handleUploadBeforeFake"
:before-remove="handleFileRemoveBefore"
:auto-upload="true"
:limit="8"
>
<!-- <img v-if="imageUrl" :src="imageUrl" style="height: 200px;width: 200px">-->
<i class="el-icon-plus avatar-uploader-icon" />
</el-upload>
</el-form-item>
</el-col>
</el-row>
<!-- <el-row>
<el-col :span="24">
<el-form-item
label="活动摘要:"
prop="summary"
:rules="{ required: !(controls.isOperation === '3'), message: '请输入活动简介', trigger: 'blur' }"
>
<el-input
v-model.trim="form.summary"
type="textarea"
:disabled="secondFromDisabled"
placeholder="请输入活动摘要"
size="small"
rows="3"
class="normalInput"
:maxlength="300"
/>
</el-form-item>
</el-col>
</el-row>-->
<el-row>
<el-col :span="24">
<el-form-item
label="活动内容:"
prop="details"
:rules="{ required: !(controls.isOperation === '3'), message: '请输入活动内容', trigger: 'blur' }"
>
<vue-editor
id="editorsay"
v-model="form.details"
:use-custom-image-handler="true"
:editor-toolbar="customToolbar"
:disabled="secondFromDisabled"
@blur="queryRules"
@image-added="handleImageAdded"
/>
</el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
</div> </div>
</div> </div>
...@@ -274,6 +347,7 @@ import { ...@@ -274,6 +347,7 @@ import {
import { updateResponseUrl } from '@/utils/updateUrl' import { updateResponseUrl } from '@/utils/updateUrl'
import { VueEditor } from 'vue2-editor' import { VueEditor } from 'vue2-editor'
import { yesOrNo, enableOrDisable } from '@/utils/allPageData' import { yesOrNo, enableOrDisable } from '@/utils/allPageData'
import {uploadPublic} from "@/api/system/ossInfo";
/* import { uploadPublic } from '@/api/contentManagement/sysContest'*/ /* import { uploadPublic } from '@/api/contentManagement/sysContest'*/
export default { export default {
...@@ -345,7 +419,7 @@ export default { ...@@ -345,7 +419,7 @@ export default {
createDate: undefined, createDate: undefined,
deptId: undefined, deptId: undefined,
deptTwoId: undefined, deptTwoId: undefined,
equipmentName: undefined, activityName: undefined,
flag: undefined, flag: undefined,
photoossId: undefined, photoossId: undefined,
summary: undefined, summary: undefined,
...@@ -357,6 +431,9 @@ export default { ...@@ -357,6 +431,9 @@ export default {
isAuthentication: undefined, isAuthentication: undefined,
registrationFee: '0.00' registrationFee: '0.00'
}, },
fileList: [],
dialogImageUrl: '',
dialogVisible: false,
yesOrNo, yesOrNo,
enableOrDisable, enableOrDisable,
// 状态 // 状态
...@@ -395,7 +472,43 @@ export default { ...@@ -395,7 +472,43 @@ export default {
this.setFormDefaults() this.setFormDefaults()
}, },
methods: { methods: {
// 上传
handlePreview(file) {
this.dialogImageUrl = file.url
this.dialogVisible = true
},
handleFileRemoveBefore(file, fileList) {
return this.$confirm(`确定移除该图片吗?`)
},
handleUploadRemoveFake(file, fileList) {
if (file.businessId) {
this.fileList = this.fileList.filter(fileItem => fileItem.businessId !== file.businessId)
} else {
this.fileList = this.fileList.filter(fileItem => fileItem.pictureId !== file.pictureId)
}
},
handleUploadExceed(files, fileList) {
this.$message.warning(`最多上传8张图片`)
},
async handleUploadBeforeFake(file) {
if (!file.type.startsWith('image/')) {
this.$message.warning('只支持上传图片')
return false
}
const formData = new FormData()
formData.append('file', file)
formData.append('temp', 'CmsActivity')
try {
const response = await uploadPublic(formData)
this.fileList.push({
url: response.data.url,
name: response.data.activityName,
businessId: response.data.businessId
})
} catch (error) {
console.error('上传失败:', error)
}
},
setFormDefaults() { setFormDefaults() {
const isOperation = this.isOperation const isOperation = this.isOperation
...@@ -419,7 +532,7 @@ export default { ...@@ -419,7 +532,7 @@ export default {
* @param: * @param:
* @return: * @return:
**/ **/
handleUpload(file) { /* handleUpload(file) {
const formData = new FormData() const formData = new FormData()
formData.append('file', file.file) formData.append('file', file.file)
formData.append('temp', 'newInformation') formData.append('temp', 'newInformation')
...@@ -447,7 +560,7 @@ export default { ...@@ -447,7 +560,7 @@ export default {
// resetUploader() // resetUploader()
// } else { } // } else { }
// }) // })
}, },*/
// 查询详情 // 查询详情
getDetail() { getDetail() {
...@@ -607,14 +720,14 @@ export default { ...@@ -607,14 +720,14 @@ export default {
border-color: #409EFF; border-color: #409EFF;
} }
::v-deep.avatar-uploader-icon { /*::v-deep.avatar-uploader-icon {
font-size: 28px; font-size: 28px;
color: #8c939d; color: #8c939d;
width: 178px; width: 178px;
height: 178px; height: 178px;
line-height: 178px; line-height: 178px;
text-align: center; text-align: center;
} }*/
::v-deep.avatar { ::v-deep.avatar {
width: 178px; width: 178px;
......
...@@ -20,13 +20,15 @@ ...@@ -20,13 +20,15 @@
:icon="commonField.queryIcon" :icon="commonField.queryIcon"
:size="commonField.smallSize" :size="commonField.smallSize"
@click="handleQuery" @click="handleQuery"
>查询</el-button> >查询
</el-button>
<el-button <el-button
:class="commonField.resetClass" :class="commonField.resetClass"
:icon="commonField.resetIcon" :icon="commonField.resetIcon"
:size="commonField.smallSize" :size="commonField.smallSize"
@click="resetQuery" @click="resetQuery"
>重置</el-button> >重置
</el-button>
</el-form-item> </el-form-item>
<div style="float: right"> <div style="float: right">
<el-form-item> <el-form-item>
...@@ -36,7 +38,8 @@ ...@@ -36,7 +38,8 @@
:icon="commonField.addIcon" :icon="commonField.addIcon"
:size="commonField.smallSize" :size="commonField.smallSize"
@click="handleAdd" @click="handleAdd"
>新增</el-button> >新增
</el-button>
</el-form-item> </el-form-item>
</div> </div>
...@@ -81,11 +84,6 @@ ...@@ -81,11 +84,6 @@
</div> </div>
</template>--> </template>-->
<el-table-column align="center" label="分类" prop="type" :show-overflow-tooltip="true" min-width="80"> <el-table-column align="center" label="分类" prop="type" :show-overflow-tooltip="true" min-width="80">
<!-- <template slot-scope="scope">
<span>
{{ getTypeValue(scope.row.type) || '-' }}
</span>
</template>-->
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.type=='0'">首页</span> <span v-if="scope.row.type=='0'">首页</span>
<span v-else-if="scope.row.type=='1'">活动</span> <span v-else-if="scope.row.type=='1'">活动</span>
...@@ -97,7 +95,7 @@ ...@@ -97,7 +95,7 @@
{{ scope.row.bannerName || '-' }} {{ scope.row.bannerName || '-' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="排序" prop="weight" :show-overflow-tooltip="true" min-width="55"> <el-table-column label="权重" prop="weight" :show-overflow-tooltip="true" min-width="55">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.weight || '-' }} {{ scope.row.weight || '-' }}
</template> </template>
...@@ -120,13 +118,15 @@ ...@@ -120,13 +118,15 @@
:type="commonField.typeParent" :type="commonField.typeParent"
:size="commonField.size" :size="commonField.size"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
>修改</el-button> >修改
</el-button>
<el-button <el-button
:class="commonField.delClass" :class="commonField.delClass"
:type="commonField.typeParent" :type="commonField.typeParent"
:size="commonField.size" :size="commonField.size"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
>删除</el-button> >删除
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -152,26 +152,29 @@ ...@@ -152,26 +152,29 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="名称:" prop="bannerName"> <el-form-item label="名称:" prop="bannerName">
<el-input v-model.trim="form.bannerName" show-word-limit :maxlength="500" placeholder="请输入banner名字" /> <el-input v-model.trim="form.bannerName" show-word-limit :maxlength="500" placeholder="请输入banner名字"/>
</el-form-item> </el-form-item>
<el-form-item label="封面:" prop="bannerPicture"> <el-form-item label="封面:" prop="pictureId">
<el-input v-model="form.bannerPicture" style="display: none" />
<el-upload <el-upload
accept=".png,.jpg,.jpeg,.PNG,.JPG,.JPEG"
ref="upload"
:file-list="fileList"
list-type="picture-card"
class="avatar-uploader" class="avatar-uploader"
action="#" action="#"
accept=".png,.jpg,.jpeg,.PNG,.JPG,.JPEG" :on-preview="handlePreview"
:http-request="handleUpload" :on-remove="handleUploadRemoveFake"
:show-file-list="false" :on-exceed="handleUploadExceed"
:on-success="handleAvatarSuccess" :before-upload="handleUploadBeforeFake"
:before-upload="beforeAvatarUpload" :before-remove="handleFileRemoveBefore"
:auto-upload="true"
:limit="8"
> >
<img v-if="imageUrl" :src="imageUrl" style="height: 200px;width: 200px"> <i class="el-icon-plus avatar-uploader-icon"/>
<i v-else class="el-icon-plus avatar-uploader-icon" />
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item label="排序:" prop="weight"> <el-form-item label="排序:" prop="weight">
<el-input-number v-model.trim="form.weight" style="width: 100%" controls-position="right" :min="0" /> <el-input-number v-model.trim="form.weight" style="width: 100%" controls-position="right" :min="0"/>
</el-form-item> </el-form-item>
<el-form-item label="状态:"> <el-form-item label="状态:">
<el-radio-group v-model="form.flag" style="width: 100%"> <el-radio-group v-model="form.flag" style="width: 100%">
...@@ -201,8 +204,10 @@ import { ...@@ -201,8 +204,10 @@ import {
listCmsBanner, listCmsBanner,
updateCmsBanner updateCmsBanner
} from '@/api/contentManagement/banner' } from '@/api/contentManagement/banner'
import { typeField, enableOrDisable } from '@/utils/allPageData' import {typeField, enableOrDisable} from '@/utils/allPageData'
import commonField from '@/utils/commonField' import commonField from '@/utils/commonField'
import {uploadPublic} from "@/api/system/ossInfo";
export default { export default {
name: 'CmsBanner', name: 'CmsBanner',
data() { data() {
...@@ -240,35 +245,34 @@ export default { ...@@ -240,35 +245,34 @@ export default {
queryParams: { queryParams: {
page: 1, page: 1,
rows: 10, rows: 10,
bannerPicture: undefined, pictureId: undefined,
bannerName: undefined, bannerName: undefined,
type: undefined, type: undefined,
weight: undefined, weight: undefined,
linkUrl: undefined, path: undefined,
flag: '' flag: ''
}, },
showImg: false, showImg: false,
imagUrl: '', imagUrl: '',
// 表单参数 // 表单参数
form: {}, form: {},
fileList: [],
dialogImageUrl: '',
dialogVisible: false,
typeField, typeField,
enableOrDisable, enableOrDisable,
// 表单校验 // 表单校验
rules: { rules: {
bannerName: [ bannerName: [
{ required: true, message: '请输入名称', trigger: 'blur' } {required: true, message: '请输入名称', trigger: 'blur'}
], ],
type: [ type: [
{ required: true, message: '请选择类型' } {required: true, message: '请选择类型'}
], ],
weight: [ weight: [
{ required: true, message: '请输入排序' } {required: true, message: '请输入排序'}
],
bannerPicture: [
{ required: true, message: '请上传图片' }
] ]
} }
...@@ -283,6 +287,24 @@ export default { ...@@ -283,6 +287,24 @@ export default {
this.getList() // 列表查询 this.getList() // 列表查询
}, },
methods: { methods: {
// 上传
handlePreview(file) {
this.dialogImageUrl = file.url
this.dialogVisible = true
},
handleFileRemoveBefore(file, fileList) {
return this.$confirm(`确定移除该图片吗?`)
},
handleUploadRemoveFake(file, fileList) {
if (file.businessId) {
this.fileList = this.fileList.filter(fileItem => fileItem.businessId !== file.businessId)
} else {
this.fileList = this.fileList.filter(fileItem => fileItem.pictureId !== file.pictureId)
}
},
handleUploadExceed(files, fileList) {
this.$message.warning(`最多上传8张图片`)
},
// 获取对应的分类名称 // 获取对应的分类名称
getTypeValue(type) { getTypeValue(type) {
// 查找 type 对应的 value // 查找 type 对应的 value
...@@ -290,8 +312,12 @@ export default { ...@@ -290,8 +312,12 @@ export default {
return found ? found.value : null // 如果没有找到对应的分类,返回 null return found ? found.value : null // 如果没有找到对应的分类,返回 null
}, },
// 获取图片的正确路径 // 获取图片的正确路径
getImagePath() { getImagePath(path) {
return require(`@/assets/image/testImage/test.png`) // 返回图片路径
if (path) {
return path
}
return ''
}, },
// 封面图片预览 // 封面图片预览
justEnter(event) { justEnter(event) {
...@@ -332,9 +358,9 @@ export default { ...@@ -332,9 +358,9 @@ export default {
// 模拟本地上传,将图片保存到本地某个目录(如:assets/images) // 模拟本地上传,将图片保存到本地某个目录(如:assets/images)
const localPath = this.getImagePath(file.file) // 获取本地存储的路径 const localPath = this.getImagePath(file.file) // 获取本地存储的路径
// 假设你将本地路径保存到 form.bannerPicture // 假设你将本地路径保存到 form.pictureId
this.imageUrl = localPath // 显示图片路径 this.imageUrl = localPath // 显示图片路径
this.form.bannerPicture = localPath // 保存到表单字段中 this.form.pictureId = localPath // 保存到表单字段中
}, },
/* handleUpload(file) { /* handleUpload(file) {
const formData = new FormData() const formData = new FormData()
...@@ -344,13 +370,13 @@ export default { ...@@ -344,13 +370,13 @@ export default {
// console.log('url', res.data.url) // console.log('url', res.data.url)
this.imageUrl = res.data.url this.imageUrl = res.data.url
this.showImg = true this.showImg = true
this.form.bannerPicture = res.data.businessId this.form.pictureId = res.data.businessId
}) })
},*/ },*/
handleAvatarSuccess(res, file) { handleAvatarSuccess(res, file) {
console.log('res', res) console.log('res', res)
// this.imageUrl = URL.createObjectURL(file.raw) // this.imageUrl = URL.createObjectURL(file.raw)
// this.form.bannerPicture = res.data.businessId // this.form.pictureId = res.data.businessId
// this.form.url = res.data.url // this.form.url = res.data.url
}, },
beforeAvatarUpload(file) { beforeAvatarUpload(file) {
...@@ -395,15 +421,16 @@ export default { ...@@ -395,15 +421,16 @@ export default {
}, },
// 表单重置 // 表单重置
reset() { reset() {
this.fileList = []
this.form = { this.form = {
businessId: undefined, businessId: undefined,
bannerPicture: undefined, pictureId: undefined,
bannerName: undefined, bannerName: undefined,
type: undefined, type: undefined,
weight: undefined, weight: undefined,
remarks: undefined, remarks: undefined,
linkUrl: undefined, path: undefined,
flag: '0' flag: '1'
} }
}, },
/** 查询按钮操作 */ /** 查询按钮操作 */
...@@ -416,11 +443,11 @@ export default { ...@@ -416,11 +443,11 @@ export default {
this.queryParams = { this.queryParams = {
page: 1, page: 1,
rows: 10, rows: 10,
bannerPicture: undefined, pictureId: undefined,
bannerName: undefined, bannerName: undefined,
type: undefined, type: undefined,
weight: undefined, weight: undefined,
linkUrl: undefined, path: undefined,
flag: '' flag: ''
} }
this.handleQuery() this.handleQuery()
...@@ -439,7 +466,11 @@ export default { ...@@ -439,7 +466,11 @@ export default {
const id = row.businessId const id = row.businessId
getCmsBanner(id).then(response => { getCmsBanner(id).then(response => {
this.form = response.data this.form = response.data
this.imageUrl = response.data.url const param = {
url: response.data.path
}
this.fileList.push(param)
console.log("hhahaah",this.fileList)
this.open = true this.open = true
this.title = '修改banner' this.title = '修改banner'
}) })
...@@ -451,19 +482,19 @@ export default { ...@@ -451,19 +482,19 @@ export default {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(function() { }).then(function () {
return updateCmsBanner(row) return updateCmsBanner(row)
}).then(() => { }).then(() => {
this.$message({ this.$message({
message: text + '成功', message: text + '成功',
type: 'success' type: 'success'
}) })
}).catch(function() { }).catch(function () {
row.flag = row.flag === '0' ? '1' : '0' row.flag = row.flag === '0' ? '1' : '0'
}) })
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm: function() { submitForm: function () {
this.$refs['form'].validate(valid => { this.$refs['form'].validate(valid => {
if (valid) { if (valid) {
if (this.form.businessId !== undefined) { if (this.form.businessId !== undefined) {
...@@ -472,12 +503,17 @@ export default { ...@@ -472,12 +503,17 @@ export default {
this.open = false this.open = false
this.getList() this.getList()
}) })
} else { }else {
addCmsBanner(this.form).then(response => { // 确保 pictureId 已经从 fileList 中获得正确的 businessId
this.msgSuccess('新增成功') if (this.form.pictureId) {
this.open = false addCmsBanner(this.form).then(response => {
this.getList() this.msgSuccess('新增成功');
}) this.open = false;
this.getList();
});
} else {
this.$message.warning('请上传封面图片');
}
} }
} }
}) })
...@@ -489,7 +525,7 @@ export default { ...@@ -489,7 +525,7 @@ export default {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(function() { }).then(function () {
return delCmsBanner(id) return delCmsBanner(id)
}).then(() => { }).then(() => {
this.getList() this.getList()
...@@ -497,9 +533,36 @@ export default { ...@@ -497,9 +533,36 @@ export default {
message: '删除成功', message: '删除成功',
type: 'success' type: 'success'
}) })
}).catch(function() { }).catch(function () {
}) })
}, },
async handleUploadBeforeFake(file) {
if (!file.type.startsWith('image/')) {
this.$message.warning('只支持上传图片')
return false
}
const formData = new FormData()
formData.append('file', file)
formData.append('temp', 'CmsBanner')
try {
// 发起上传请求
const response = await uploadPublic(formData);
// 获取返回的 businessId,并更新 form.pictureId
const businessId = response.data.businessId
this.form.pictureId = businessId
// 更新 fileList,保存文件的 URL 和其他信息
this.fileList.push({
url: response.data.url,
name: response.data.bannerName,
businessId: businessId
});
} catch (error) {
console.error('上传失败:', error);
}
},
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
const queryParams = this.queryParams const queryParams = this.queryParams
...@@ -507,7 +570,7 @@ export default { ...@@ -507,7 +570,7 @@ export default {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(function() { }).then(function () {
return exportCmsBanner(queryParams).then(response => { return exportCmsBanner(queryParams).then(response => {
const blob = new Blob([response]) const blob = new Blob([response])
const downloadElement = document.createElement('a') const downloadElement = document.createElement('a')
...@@ -537,15 +600,16 @@ export default { ...@@ -537,15 +600,16 @@ export default {
border-color: #409EFF; border-color: #409EFF;
} }
.avatar-uploader-icon { /*.avatar-uploader-icon {
font-size: 28px; font-size: 30px;
color: #8c939d; color: #8c939d;
width: 178px; width: 180px;
height: 178px; height: 180px;
line-height: 178px; line-height: 178px;
text-align: center; text-align: center;
border: 1px solid #dcdfe6; border: 1px solid #dcdfe6;
} }*/
.app-container { .app-container {
font-size: 18px; font-size: 18px;
padding: 0; padding: 0;
...@@ -554,12 +618,13 @@ export default { ...@@ -554,12 +618,13 @@ export default {
margin: 10px; margin: 10px;
height: 45px; height: 45px;
} }
/* ::v-deep .el-table .cell {
text-align: center !important; /* ::v-deep .el-table .cell {
} text-align: center !important;
::v-deep .el-table th .cell{ }
justify-content: center; ::v-deep .el-table th .cell{
text-align: center !important; justify-content: center;
}*/ text-align: center !important;
}*/
} }
</style> </style>
...@@ -98,10 +98,12 @@ ...@@ -98,10 +98,12 @@
<el-tag v-if="scope.row.isRecommended === 1" type="warning" size="medium ">推荐</el-tag> <el-tag v-if="scope.row.isRecommended === 1" type="warning" size="medium ">推荐</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-form-item label="排序:" prop="weight"> <el-table-column label="权重" prop="weight" :show-overflow-tooltip="true" min-width="55">
<el-input-number v-model.trim="form.weight" style="width: 100%" controls-position="right" :min="0" /> <template slot-scope="scope">
</el-form-item> {{ scope.row.weight || '-' }}
<el-table-column align="left" prop="releaseStatus" label="发布状态" min-width="120" show-overflow-tooltip> </template>
</el-table-column>
<el-table-column align="left" prop="releaseStatus" label="状态" min-width="120" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<el-switch <el-switch
v-model="scope.row.flag" v-model="scope.row.flag"
......
...@@ -87,21 +87,24 @@ ...@@ -87,21 +87,24 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="公告封面:"> <el-form-item label="公告封面:" prop="pictureId">
<el-upload <el-upload
accept=".png,.jpg,.jpeg,.PNG,.JPG,.JPEG" accept=".png,.jpg,.jpeg,.PNG,.JPG,.JPEG"
:disabled="secondFromDisabled" ref="upload"
:file-list="fileList"
list-type="picture-card"
class="avatar-uploader" class="avatar-uploader"
action="#" action="#"
:http-request="handleUpload" :on-preview="handlePreview"
:show-file-list="false" :on-remove="handleUploadRemoveFake"
:on-success="handleAvatarSuccess" :on-exceed="handleUploadExceed"
:before-upload="beforeAvatarUpload" :before-upload="handleUploadBeforeFake"
:before-remove="handleFileRemoveBefore"
:auto-upload="true"
:limit="8"
> >
<img v-if="imageUrl" :src="imageUrl" style="height: 200px;width: 200px"> <i class="el-icon-plus avatar-uploader-icon"/>
<i v-else class="el-icon-plus avatar-uploader-icon" />
</el-upload> </el-upload>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -160,6 +163,7 @@ import { ...@@ -160,6 +163,7 @@ import {
import { updateResponseUrl } from '@/utils/updateUrl' import { updateResponseUrl } from '@/utils/updateUrl'
import { VueEditor } from 'vue2-editor' import { VueEditor } from 'vue2-editor'
import { yesOrNo, enableOrDisable } from '@/utils/allPageData' import { yesOrNo, enableOrDisable } from '@/utils/allPageData'
import {uploadPublic} from "@/api/system/ossInfo";
/* import { uploadPublic } from '@/api/contentManagement/sysContest'*/ /* import { uploadPublic } from '@/api/contentManagement/sysContest'*/
export default { export default {
...@@ -210,6 +214,9 @@ export default { ...@@ -210,6 +214,9 @@ export default {
// 1:代表新增 2:代表编辑 3:代表查看 // 1:代表新增 2:代表编辑 3:代表查看
isOperation: '1' isOperation: '1'
}, },
fileList: [],
dialogImageUrl: '',
dialogVisible: false,
fileUpload: '/dev-api/common/fileUpload?file=' + this.file + '&temp=' + 'activity', fileUpload: '/dev-api/common/fileUpload?file=' + this.file + '&temp=' + 'activity',
// 提交表单 // 提交表单
form: { form: {
...@@ -219,7 +226,7 @@ export default { ...@@ -219,7 +226,7 @@ export default {
createDate: undefined, createDate: undefined,
deptId: undefined, deptId: undefined,
deptTwoId: undefined, deptTwoId: undefined,
equipmentName: undefined, noticeName: undefined,
flag: undefined, flag: undefined,
photoossId: undefined, photoossId: undefined,
summary: undefined, summary: undefined,
...@@ -266,6 +273,51 @@ export default { ...@@ -266,6 +273,51 @@ export default {
this.setFormDefaults() this.setFormDefaults()
}, },
methods: { methods: {
// 上传
handlePreview(file) {
this.dialogImageUrl = file.url
this.dialogVisible = true
},
handleFileRemoveBefore(file, fileList) {
return this.$confirm(`确定移除该图片吗?`)
},
handleUploadRemoveFake(file, fileList) {
if (file.businessId) {
this.fileList = this.fileList.filter(fileItem => fileItem.businessId !== file.businessId)
} else {
this.fileList = this.fileList.filter(fileItem => fileItem.pictureId !== file.pictureId)
}
},
handleUploadExceed(files, fileList) {
this.$message.warning(`最多上传8张图片`)
},
async handleUploadBeforeFake(file) {
if (!file.type.startsWith('image/')) {
this.$message.warning('只支持上传图片')
return false
}
const formData = new FormData()
formData.append('file', file)
formData.append('temp', 'CmsNotice')
try {
// 发起上传请求
const response = await uploadPublic(formData);
// 获取返回的 businessId,并更新 form.pictureId
const businessId = response.data.businessId
this.form.pictureId = businessId
// 更新 fileList,保存文件的 URL 和其他信息
this.fileList.push({
url: response.data.url,
name: response.data.noticeName,
businessId: businessId
});
} catch (error) {
console.error('上传失败:', error);
}
},
setFormDefaults() { setFormDefaults() {
const isOperation = this.isOperation const isOperation = this.isOperation
......
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
<el-table-column align="center" prop="weight" label="排序" min-width="200" show-overflow-tooltip /> <el-table-column align="center" prop="weight" label="排序" min-width="200" show-overflow-tooltip />
<el-table-column align="center" prop="articleCount" label="动态数" min-width="200" show-overflow-tooltip /> <el-table-column align="center" prop="articleCount" label="动态数" min-width="200" show-overflow-tooltip />
<el-table-column align="left" prop="flag" label="发布状态" min-width="120" show-overflow-tooltip> <el-table-column align="left" prop="flag" label="状态" min-width="120" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<el-switch <el-switch
v-model="scope.row.flag" v-model="scope.row.flag"
...@@ -157,12 +157,12 @@ ...@@ -157,12 +157,12 @@
<el-form-item label="话题名称:" prop="topicName"> <el-form-item label="话题名称:" prop="topicName">
<el-input v-model.trim="form.topicName" show-word-limit :maxlength="500" placeholder="请输入话题名称" /> <el-input v-model.trim="form.topicName" show-word-limit :maxlength="500" placeholder="请输入话题名称" />
</el-form-item> </el-form-item>
<el-form-item label="排序:" prop="weight"> <el-form-item label="权重:" prop="weight">
<el-input-number v-model.trim="form.weight" style="width: 100%" controls-position="right" :min="0" /> <el-input-number v-model.trim="form.weight" style="width: 100%" controls-position="right" :min="0" />
</el-form-item> </el-form-item>
<el-form-item label="动态数:" prop="articleCount"> <!-- <el-form-item label="动态数:" prop="articleCount">-->
<el-input-number v-model.trim="form.articleCount" style="width: 100%" controls-position="right" :min="0" /> <!-- <el-input-number v-model.trim="form.articleCount" style="width: 100%" controls-position="right" :min="0" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="状态:"> <el-form-item label="状态:">
<el-radio-group v-model="form.flag" style="width: 100%"> <el-radio-group v-model="form.flag" style="width: 100%">
<el-radio <el-radio
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment