|
|
@@ -49,12 +49,20 @@
|
|
|
<el-table :data="tableData" border style="width: 100%" height="580">
|
|
|
<el-table-column prop="announcementName" label="公告名称" align="center"> </el-table-column>
|
|
|
<el-table-column prop="createrName" label="创建人" align="center"> </el-table-column>
|
|
|
- <el-table-column prop="createDate" label="创建时间" align="center"> </el-table-column>
|
|
|
+ <el-table-column prop="createTime" label="创建时间" align="center">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ formatDate(scope.row.createTime) }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<el-table-column prop="announcementStatus" label="公告状态" align="center"></el-table-column>
|
|
|
<el-table-column label="操作" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-button size="small" type="text" @click="handleRelease(scope.row)"><img src="@/assets/image/common/p0.png" class="vIcon" /> 发布</el-button>
|
|
|
- <el-button size="small" type="text" @click="handleTakeDown(scope.row)"><img src="@/assets/image/common/p3.png" class="vIcon" />下架</el-button>
|
|
|
+ <el-button size="small" type="text" @click="handleRelease(scope.row)" v-if="scope.row.announcementStatus == '草稿'"
|
|
|
+ ><img src="@/assets/image/common/p0.png" class="vIcon" /> 发布</el-button
|
|
|
+ >
|
|
|
+ <el-button size="small" type="text" @click="handleTakeDown(scope.row)" v-if="scope.row.announcementStatus == '已发布'"
|
|
|
+ ><img src="@/assets/image/common/p3.png" class="vIcon" />下架</el-button
|
|
|
+ >
|
|
|
<el-button size="small" type="text" @click="handleEdit(scope.row)"><i class="el-icon-edit"></i> 编辑</el-button>
|
|
|
<el-button size="small" type="text" @click="handleDelete(scope.row)"><i class="el-icon-delete"></i> 删除</el-button>
|
|
|
</template>
|
|
|
@@ -80,25 +88,34 @@
|
|
|
<el-input v-model="form.announcementName"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="公告内容" prop="announcementContent">
|
|
|
- <el-input type="textarea" :rows="10" v-model="form.announcementContent"> </el-input>
|
|
|
+ <el-input type="textarea" :rows="7" v-model="form.announcementContent"> </el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="上传图片" required>
|
|
|
<el-upload
|
|
|
class="avatar-uploader"
|
|
|
action="/api/announcement/uploadImage"
|
|
|
+ list-type="picture-card"
|
|
|
accept=".jpg,.jpeg,.png"
|
|
|
+ :file-list="fileList"
|
|
|
:show-file-list="false"
|
|
|
+ :class="{ 'hide-upload-button': fileList.length >= 1 }"
|
|
|
+ :limit="1"
|
|
|
+ :on-preview="handlePictureCardPreview"
|
|
|
+ :on-remove="handleRemove"
|
|
|
:on-success="handleAvatarSuccess"
|
|
|
:before-upload="beforeUpload"
|
|
|
>
|
|
|
- <el-button size="small" class="primaryBtn">上传</el-button>
|
|
|
+ <img v-if="imageUrl" :src="imageUrl" class="avatar" />
|
|
|
+ <i class="el-icon-plus" v-else></i>
|
|
|
<div slot="tip" class="el-upload__tip">温馨提示:仅需上传一张小于5M的配图即可,格式支持JPG、PNG、JPEG</div>
|
|
|
- <img v-if="form.images" :src="form.images" class="preview-image" />
|
|
|
</el-upload>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="公告状态">
|
|
|
- <el-radio v-model="form.announcementStatus" label="2">草稿</el-radio>
|
|
|
- <el-radio v-model="form.announcementStatus" label="1">发布</el-radio>
|
|
|
+ <el-radio v-model="form.announcementStatus" :label="2">草稿</el-radio>
|
|
|
+ <el-radio v-model="form.announcementStatus" :label="1">发布</el-radio>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="创建人" prop="createrName">
|
|
|
+ <el-input v-model="form.createrName"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
@@ -113,15 +130,22 @@
|
|
|
<el-button @click="releaseDialogVisible = false" size="small">取 消</el-button>
|
|
|
</span>
|
|
|
</el-dialog>
|
|
|
+ <el-dialog :visible.sync="dialogImageVisible">
|
|
|
+ <img width="100%" :src="imageUrl" alt="" />
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import moment from 'moment'
|
|
|
import { getAnnouncementList, toPublish, toTakeDown, toDelete, toAddAnnouncement, toUpdateAnnouncement } from '@/api/announcementApi'
|
|
|
export default {
|
|
|
data() {
|
|
|
return {
|
|
|
dateRange: [],
|
|
|
+ imageUrl: '',
|
|
|
+ dialogImageVisible: false,
|
|
|
+ fileList: [],
|
|
|
searchForm: {
|
|
|
announcementName: '',
|
|
|
announcementStatus: '',
|
|
|
@@ -131,11 +155,11 @@ export default {
|
|
|
pageNum: 1,
|
|
|
pageSize: 10
|
|
|
},
|
|
|
- imageUrl: '',
|
|
|
form: {
|
|
|
announcementName: '',
|
|
|
images: '',
|
|
|
- announcementStatus: '2',
|
|
|
+ createrName: '',
|
|
|
+ announcementStatus: 2,
|
|
|
announcementContent: ''
|
|
|
},
|
|
|
statusOptions: [
|
|
|
@@ -159,7 +183,8 @@ export default {
|
|
|
rules: {
|
|
|
announcementName: [{ required: true, message: '请输入公告名称', trigger: 'blur' }],
|
|
|
announcementContent: [{ required: true, message: '请输入公告内容', trigger: 'blur' }],
|
|
|
- address: [{ required: true, message: '请输入水文站位置', trigger: 'blur' }]
|
|
|
+ address: [{ required: true, message: '请输入水文站位置', trigger: 'blur' }],
|
|
|
+ createrName: [{ required: true, message: '请输入创建人', trigger: 'blur' }]
|
|
|
},
|
|
|
announcementId: ''
|
|
|
}
|
|
|
@@ -168,6 +193,9 @@ export default {
|
|
|
this.fetchData()
|
|
|
},
|
|
|
methods: {
|
|
|
+ formatDate(date) {
|
|
|
+ return moment(date).format('YYYY-MM-DD HH:mm:ss')
|
|
|
+ },
|
|
|
handleSearch() {
|
|
|
this.fetchData()
|
|
|
},
|
|
|
@@ -181,11 +209,13 @@ export default {
|
|
|
pageNum: 1,
|
|
|
pageSize: 10
|
|
|
}
|
|
|
+ this.dateRange = []
|
|
|
+ this.fetchData()
|
|
|
},
|
|
|
handleDateChange(val) {
|
|
|
if (val && val.length === 2) {
|
|
|
- this.searchForm.startTime = val[0]
|
|
|
- this.searchForm.endTime = val[1]
|
|
|
+ this.searchForm.startTime = this.formatDate(val[0])
|
|
|
+ this.searchForm.endTime = this.formatDate(val[1])
|
|
|
} else {
|
|
|
this.searchForm.startTime = ''
|
|
|
this.searchForm.endTime = ''
|
|
|
@@ -205,6 +235,10 @@ export default {
|
|
|
},
|
|
|
handleEdit(row) {
|
|
|
this.form = JSON.parse(JSON.stringify(row))
|
|
|
+ console.info(row)
|
|
|
+ const obj = this.statusOptions.find((item) => item.label == row.announcementStatus)
|
|
|
+ this.form.announcementStatus = obj ? obj.value : 2
|
|
|
+ console.info(this.form)
|
|
|
this.title = '编辑公告'
|
|
|
this.titleType = 'edit'
|
|
|
this.addDialogVisible = true
|
|
|
@@ -216,6 +250,7 @@ export default {
|
|
|
message: '删除成功',
|
|
|
type: 'success'
|
|
|
})
|
|
|
+ this.fetchData()
|
|
|
} else {
|
|
|
this.$message({
|
|
|
message: '删除失败',
|
|
|
@@ -240,6 +275,8 @@ export default {
|
|
|
},
|
|
|
handleAvatarSuccess(res, file) {
|
|
|
this.form.images = URL.createObjectURL(file.raw)
|
|
|
+ this.imageUrl = res.url
|
|
|
+ this.fileList = [file]
|
|
|
},
|
|
|
beforeUpload(file) {
|
|
|
const isImage = ['image/jpeg', 'image/png', 'image/jpg'].includes(file.type)
|
|
|
@@ -251,21 +288,30 @@ export default {
|
|
|
if (!isLt5M) {
|
|
|
this.$message.error('图片大小不能超过5MB!')
|
|
|
}
|
|
|
+
|
|
|
return isImage && isLt5M
|
|
|
},
|
|
|
toAdd() {
|
|
|
this.title = '新增公告'
|
|
|
this.titleType = 'add'
|
|
|
+ this.fileList = []
|
|
|
+ this.form = {
|
|
|
+ announcementName: '',
|
|
|
+ images: '',
|
|
|
+ announcementStatus: 2,
|
|
|
+ announcementContent: ''
|
|
|
+ }
|
|
|
this.addDialogVisible = true
|
|
|
},
|
|
|
toConfirm() {
|
|
|
- if (this.type) {
|
|
|
+ if (this.type == 1) {
|
|
|
toPublish(this.announcementId).then((res) => {
|
|
|
if (res.data) {
|
|
|
this.$message({
|
|
|
message: '发布成功',
|
|
|
type: 'success'
|
|
|
})
|
|
|
+ this.fetchData()
|
|
|
} else {
|
|
|
this.$message({
|
|
|
message: '发布失败',
|
|
|
@@ -280,6 +326,7 @@ export default {
|
|
|
message: '下架成功',
|
|
|
type: 'success'
|
|
|
})
|
|
|
+ this.fetchData()
|
|
|
} else {
|
|
|
this.$message({
|
|
|
message: '下架失败',
|
|
|
@@ -288,50 +335,63 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
+ this.releaseDialogVisible = false
|
|
|
},
|
|
|
confirmSubmit() {
|
|
|
- if (this.titleType == 'add') {
|
|
|
- toAddAnnouncement(this.form).then((res) => {
|
|
|
- if (res.data) {
|
|
|
- this.$message({
|
|
|
- message: '新增成功',
|
|
|
- type: 'success'
|
|
|
+ this.$refs.form.validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ if (this.titleType == 'add') {
|
|
|
+ toAddAnnouncement(this.form).then((res) => {
|
|
|
+ if (res.data) {
|
|
|
+ this.$message({
|
|
|
+ message: '新增成功',
|
|
|
+ type: 'success'
|
|
|
+ })
|
|
|
+ this.closeModal()
|
|
|
+ this.fetchData()
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ message: '新增失败',
|
|
|
+ type: 'error'
|
|
|
+ })
|
|
|
+ }
|
|
|
})
|
|
|
- this.closeModal()
|
|
|
- this.fetchData()
|
|
|
} else {
|
|
|
- this.$message({
|
|
|
- message: '新增失败',
|
|
|
- type: 'error'
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- } else {
|
|
|
- toUpdateAnnouncement(this.form).then((res) => {
|
|
|
- if (res.data) {
|
|
|
- this.$message({
|
|
|
- message: '新增成功',
|
|
|
- type: 'success'
|
|
|
- })
|
|
|
- this.closeModal()
|
|
|
- this.fetchData()
|
|
|
- } else {
|
|
|
- this.$message({
|
|
|
- message: '新增失败',
|
|
|
- type: 'error'
|
|
|
+ toUpdateAnnouncement(this.form).then((res) => {
|
|
|
+ if (res.data) {
|
|
|
+ this.$message({
|
|
|
+ message: '新增成功',
|
|
|
+ type: 'success'
|
|
|
+ })
|
|
|
+ this.closeModal()
|
|
|
+ this.fetchData()
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ message: '新增失败',
|
|
|
+ type: 'error'
|
|
|
+ })
|
|
|
+ }
|
|
|
})
|
|
|
}
|
|
|
- })
|
|
|
- }
|
|
|
+ }
|
|
|
+ })
|
|
|
},
|
|
|
- closeModal(){
|
|
|
+ closeModal() {
|
|
|
this.addDialogVisible = false
|
|
|
+ this.fileList = []
|
|
|
this.form = {
|
|
|
announcementName: '',
|
|
|
images: '',
|
|
|
- announcementStatus: '2',
|
|
|
+ announcementStatus: 2,
|
|
|
announcementContent: ''
|
|
|
}
|
|
|
+ },
|
|
|
+ handleRemove(file, fileList) {
|
|
|
+ this.fileList = fileList
|
|
|
+ },
|
|
|
+ handlePictureCardPreview(file) {
|
|
|
+ this.imageUrl = file.url
|
|
|
+ this.dialogImageVisible = true
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -347,6 +407,15 @@ export default {
|
|
|
:deep(.el-input__inner) {
|
|
|
width: 100%;
|
|
|
}
|
|
|
+ :deep(.el-upload--picture-card),
|
|
|
+ :deep(.el-upload-list--picture-card .el-upload-list__item) {
|
|
|
+ width: px-to-rem(90);
|
|
|
+ height: px-to-rem(90);
|
|
|
+ line-height: px-to-rem(90);
|
|
|
+ }
|
|
|
+ :deep(.el-upload-list__item-status-label) {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
.mb20 {
|
|
|
margin-bottom: px-to-rem(20);
|
|
|
}
|
|
|
@@ -408,6 +477,12 @@ export default {
|
|
|
:deep(.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner) {
|
|
|
box-shadow: none !important;
|
|
|
}
|
|
|
+
|
|
|
+:deep(.hide-upload-button) {
|
|
|
+ .el-upload--picture-card {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+}
|
|
|
.preview-image {
|
|
|
max-width: px-to-rem(100);
|
|
|
max-height: px-to-rem(100);
|
|
|
@@ -415,4 +490,4 @@ export default {
|
|
|
border-radius: px-to-rem(4);
|
|
|
margin-left: px-to-rem(10);
|
|
|
}
|
|
|
-</style>
|
|
|
+</style>
|