|
@@ -9,7 +9,7 @@
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
<el-col :span="8">
|
|
|
<el-form-item label="公告状态">
|
|
<el-form-item label="公告状态">
|
|
|
- <el-select v-model="searchForm.announcementStatus" placeholder="请选择">
|
|
|
|
|
|
|
+ <el-select v-model="searchForm.announcementStatus" placeholder="请选择" popper-class="f-select">
|
|
|
<el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value"> </el-option>
|
|
<el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value"> </el-option>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -23,7 +23,15 @@
|
|
|
<el-row>
|
|
<el-row>
|
|
|
<el-col :span="8">
|
|
<el-col :span="8">
|
|
|
<el-form-item label="创建时间">
|
|
<el-form-item label="创建时间">
|
|
|
- <el-date-picker v-model="dateRange" type="daterange" range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" @change="handleDateChange">
|
|
|
|
|
|
|
+ <el-date-picker
|
|
|
|
|
+ v-model="dateRange"
|
|
|
|
|
+ type="daterange"
|
|
|
|
|
+ range-separator="至"
|
|
|
|
|
+ start-placeholder="开始时间"
|
|
|
|
|
+ end-placeholder="结束时间"
|
|
|
|
|
+ @change="handleDateChange"
|
|
|
|
|
+ popper-class="v-date-picker"
|
|
|
|
|
+ >
|
|
|
</el-date-picker>
|
|
</el-date-picker>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
@@ -54,11 +62,12 @@
|
|
|
</el-table>
|
|
</el-table>
|
|
|
<el-pagination
|
|
<el-pagination
|
|
|
class="page"
|
|
class="page"
|
|
|
|
|
+ popper-class="v-pageination"
|
|
|
@size-change="handleSizeChange"
|
|
@size-change="handleSizeChange"
|
|
|
@current-change="handleCurrentChange"
|
|
@current-change="handleCurrentChange"
|
|
|
- :current-page="currentPage"
|
|
|
|
|
|
|
+ :current-page="searchForm.pageNum"
|
|
|
:page-sizes="[10, 20, 50, 100]"
|
|
:page-sizes="[10, 20, 50, 100]"
|
|
|
- :page-size="pageSize"
|
|
|
|
|
|
|
+ :page-size="searchForm.pageSize"
|
|
|
small
|
|
small
|
|
|
background
|
|
background
|
|
|
layout="total, sizes, prev, pager, next, jumper"
|
|
layout="total, sizes, prev, pager, next, jumper"
|
|
@@ -74,10 +83,17 @@
|
|
|
<el-input type="textarea" :rows="10" v-model="form.announcementContent"> </el-input>
|
|
<el-input type="textarea" :rows="10" v-model="form.announcementContent"> </el-input>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="上传图片" required>
|
|
<el-form-item label="上传图片" required>
|
|
|
- <el-upload class="avatar-uploader" action="/api/announcement/uploadImage" accept=".jpg,.jpeg,.png" :show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeUpload">
|
|
|
|
|
|
|
+ <el-upload
|
|
|
|
|
+ class="avatar-uploader"
|
|
|
|
|
+ action="/api/announcement/uploadImage"
|
|
|
|
|
+ accept=".jpg,.jpeg,.png"
|
|
|
|
|
+ :show-file-list="false"
|
|
|
|
|
+ :on-success="handleAvatarSuccess"
|
|
|
|
|
+ :before-upload="beforeUpload"
|
|
|
|
|
+ >
|
|
|
<el-button size="small" class="primaryBtn">上传</el-button>
|
|
<el-button size="small" class="primaryBtn">上传</el-button>
|
|
|
<div slot="tip" class="el-upload__tip">温馨提示:仅需上传一张小于5M的配图即可,格式支持JPG、PNG、JPEG</div>
|
|
<div slot="tip" class="el-upload__tip">温馨提示:仅需上传一张小于5M的配图即可,格式支持JPG、PNG、JPEG</div>
|
|
|
- <img v-if="form.images" :src="form.images" class="preview-image">
|
|
|
|
|
|
|
+ <img v-if="form.images" :src="form.images" class="preview-image" />
|
|
|
</el-upload>
|
|
</el-upload>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="公告状态">
|
|
<el-form-item label="公告状态">
|
|
@@ -101,6 +117,7 @@
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
|
|
+import { getAnnouncementList, toPublish, toTakeDown, toDelete, toAddAnnouncement, toUpdateAnnouncement } from '@/api/announcementApi'
|
|
|
export default {
|
|
export default {
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
@@ -110,13 +127,15 @@ export default {
|
|
|
announcementStatus: '',
|
|
announcementStatus: '',
|
|
|
createrName: '',
|
|
createrName: '',
|
|
|
startTime: '',
|
|
startTime: '',
|
|
|
- endTime: ''
|
|
|
|
|
|
|
+ endTime: '',
|
|
|
|
|
+ pageNum: 1,
|
|
|
|
|
+ pageSize: 10
|
|
|
},
|
|
},
|
|
|
imageUrl: '',
|
|
imageUrl: '',
|
|
|
form: {
|
|
form: {
|
|
|
announcementName: '',
|
|
announcementName: '',
|
|
|
images: '',
|
|
images: '',
|
|
|
- announcementStatus: 2,
|
|
|
|
|
|
|
+ announcementStatus: '2',
|
|
|
announcementContent: ''
|
|
announcementContent: ''
|
|
|
},
|
|
},
|
|
|
statusOptions: [
|
|
statusOptions: [
|
|
@@ -129,18 +148,10 @@ export default {
|
|
|
label: '已发布'
|
|
label: '已发布'
|
|
|
}
|
|
}
|
|
|
],
|
|
],
|
|
|
- tableData: [
|
|
|
|
|
- {
|
|
|
|
|
- announcementName: '',
|
|
|
|
|
- announcementStatus: '',
|
|
|
|
|
- createrName: '',
|
|
|
|
|
- createDate: ''
|
|
|
|
|
- }
|
|
|
|
|
- ],
|
|
|
|
|
- currentPage: 1,
|
|
|
|
|
- pageSize: 10,
|
|
|
|
|
|
|
+ tableData: [],
|
|
|
total: 0,
|
|
total: 0,
|
|
|
title: '新增公告',
|
|
title: '新增公告',
|
|
|
|
|
+ titleType: 'add',
|
|
|
addDialogVisible: false,
|
|
addDialogVisible: false,
|
|
|
releaseTitle: '发布公告',
|
|
releaseTitle: '发布公告',
|
|
|
releaseDialogVisible: false,
|
|
releaseDialogVisible: false,
|
|
@@ -149,16 +160,27 @@ export default {
|
|
|
announcementName: [{ required: true, message: '请输入公告名称', trigger: 'blur' }],
|
|
announcementName: [{ required: true, message: '请输入公告名称', trigger: 'blur' }],
|
|
|
announcementContent: [{ required: true, message: '请输入公告内容', trigger: 'blur' }],
|
|
announcementContent: [{ required: true, message: '请输入公告内容', trigger: 'blur' }],
|
|
|
address: [{ required: true, message: '请输入水文站位置', trigger: 'blur' }]
|
|
address: [{ required: true, message: '请输入水文站位置', trigger: 'blur' }]
|
|
|
- }
|
|
|
|
|
|
|
+ },
|
|
|
|
|
+ announcementId: ''
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
- mounted(){
|
|
|
|
|
|
|
+ mounted() {
|
|
|
this.fetchData()
|
|
this.fetchData()
|
|
|
- },
|
|
|
|
|
|
|
+ },
|
|
|
methods: {
|
|
methods: {
|
|
|
- handleSearch() {},
|
|
|
|
|
|
|
+ handleSearch() {
|
|
|
|
|
+ this.fetchData()
|
|
|
|
|
+ },
|
|
|
resetForm() {
|
|
resetForm() {
|
|
|
- this.$refs.searchForm.resetFields()
|
|
|
|
|
|
|
+ this.searchForm = {
|
|
|
|
|
+ announcementName: '',
|
|
|
|
|
+ announcementStatus: '',
|
|
|
|
|
+ createrName: '',
|
|
|
|
|
+ startTime: '',
|
|
|
|
|
+ endTime: '',
|
|
|
|
|
+ pageNum: 1,
|
|
|
|
|
+ pageSize: 10
|
|
|
|
|
+ }
|
|
|
},
|
|
},
|
|
|
handleDateChange(val) {
|
|
handleDateChange(val) {
|
|
|
if (val && val.length === 2) {
|
|
if (val && val.length === 2) {
|
|
@@ -170,34 +192,52 @@ export default {
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
handleRelease(row) {
|
|
handleRelease(row) {
|
|
|
- console.info(row)
|
|
|
|
|
|
|
+ this.announcementId = row.id
|
|
|
this.releaseTitle = '发布公告'
|
|
this.releaseTitle = '发布公告'
|
|
|
this.type = 1
|
|
this.type = 1
|
|
|
this.releaseDialogVisible = true
|
|
this.releaseDialogVisible = true
|
|
|
},
|
|
},
|
|
|
handleTakeDown(row) {
|
|
handleTakeDown(row) {
|
|
|
- console.info(row)
|
|
|
|
|
|
|
+ this.announcementId = row.id
|
|
|
this.releaseTitle = '下架公告'
|
|
this.releaseTitle = '下架公告'
|
|
|
this.type = 2
|
|
this.type = 2
|
|
|
this.releaseDialogVisible = true
|
|
this.releaseDialogVisible = true
|
|
|
},
|
|
},
|
|
|
handleEdit(row) {
|
|
handleEdit(row) {
|
|
|
- console.info(row)
|
|
|
|
|
|
|
+ this.form = JSON.parse(JSON.stringify(row))
|
|
|
this.title = '编辑公告'
|
|
this.title = '编辑公告'
|
|
|
|
|
+ this.titleType = 'edit'
|
|
|
this.addDialogVisible = true
|
|
this.addDialogVisible = true
|
|
|
},
|
|
},
|
|
|
handleDelete(row) {
|
|
handleDelete(row) {
|
|
|
- console.info(row)
|
|
|
|
|
|
|
+ toDelete({ id: row.id }).then((res) => {
|
|
|
|
|
+ if (res.data) {
|
|
|
|
|
+ this.$message({
|
|
|
|
|
+ message: '删除成功',
|
|
|
|
|
+ type: 'success'
|
|
|
|
|
+ })
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.$message({
|
|
|
|
|
+ message: '删除失败',
|
|
|
|
|
+ type: 'error'
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
},
|
|
},
|
|
|
handleSizeChange(val) {
|
|
handleSizeChange(val) {
|
|
|
- this.pageSize = val
|
|
|
|
|
|
|
+ this.searchForm.pageSize = val
|
|
|
this.fetchData()
|
|
this.fetchData()
|
|
|
},
|
|
},
|
|
|
handleCurrentChange(val) {
|
|
handleCurrentChange(val) {
|
|
|
- this.currentPage = val
|
|
|
|
|
|
|
+ this.searchForm.pageNum = val
|
|
|
this.fetchData()
|
|
this.fetchData()
|
|
|
},
|
|
},
|
|
|
- fetchData() {},
|
|
|
|
|
|
|
+ fetchData() {
|
|
|
|
|
+ getAnnouncementList(this.searchForm).then((res) => {
|
|
|
|
|
+ this.tableData = res.data.records
|
|
|
|
|
+ this.total = res.data.total
|
|
|
|
|
+ })
|
|
|
|
|
+ },
|
|
|
handleAvatarSuccess(res, file) {
|
|
handleAvatarSuccess(res, file) {
|
|
|
this.form.images = URL.createObjectURL(file.raw)
|
|
this.form.images = URL.createObjectURL(file.raw)
|
|
|
},
|
|
},
|
|
@@ -215,31 +255,103 @@ export default {
|
|
|
},
|
|
},
|
|
|
toAdd() {
|
|
toAdd() {
|
|
|
this.title = '新增公告'
|
|
this.title = '新增公告'
|
|
|
|
|
+ this.titleType = 'add'
|
|
|
this.addDialogVisible = true
|
|
this.addDialogVisible = true
|
|
|
},
|
|
},
|
|
|
toConfirm() {
|
|
toConfirm() {
|
|
|
if (this.type) {
|
|
if (this.type) {
|
|
|
- console.info('发布')
|
|
|
|
|
|
|
+ toPublish(this.announcementId).then((res) => {
|
|
|
|
|
+ if (res.data) {
|
|
|
|
|
+ this.$message({
|
|
|
|
|
+ message: '发布成功',
|
|
|
|
|
+ type: 'success'
|
|
|
|
|
+ })
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.$message({
|
|
|
|
|
+ message: '发布失败',
|
|
|
|
|
+ type: 'error'
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
} else {
|
|
} else {
|
|
|
- console.info('下架')
|
|
|
|
|
|
|
+ toTakeDown(this.announcementId).then((res) => {
|
|
|
|
|
+ if (res.data) {
|
|
|
|
|
+ this.$message({
|
|
|
|
|
+ message: '下架成功',
|
|
|
|
|
+ type: 'success'
|
|
|
|
|
+ })
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.$message({
|
|
|
|
|
+ message: '下架失败',
|
|
|
|
|
+ type: 'error'
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
- confirmSubmit() {}
|
|
|
|
|
|
|
+ confirmSubmit() {
|
|
|
|
|
+ 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'
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ } else {
|
|
|
|
|
+ toUpdateAnnouncement(this.form).then((res) => {
|
|
|
|
|
+ if (res.data) {
|
|
|
|
|
+ this.$message({
|
|
|
|
|
+ message: '新增成功',
|
|
|
|
|
+ type: 'success'
|
|
|
|
|
+ })
|
|
|
|
|
+ this.closeModal()
|
|
|
|
|
+ this.fetchData()
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.$message({
|
|
|
|
|
+ message: '新增失败',
|
|
|
|
|
+ type: 'error'
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ closeModal(){
|
|
|
|
|
+ this.addDialogVisible = false
|
|
|
|
|
+ this.form = {
|
|
|
|
|
+ announcementName: '',
|
|
|
|
|
+ images: '',
|
|
|
|
|
+ announcementStatus: '2',
|
|
|
|
|
+ announcementContent: ''
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
|
.main-contaner {
|
|
.main-contaner {
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ padding: px-to-rem(24);
|
|
|
|
|
+ background-color: #fff;
|
|
|
:deep(.el-form .el-select),
|
|
:deep(.el-form .el-select),
|
|
|
:deep(.el-input__inner) {
|
|
:deep(.el-input__inner) {
|
|
|
width: 100%;
|
|
width: 100%;
|
|
|
}
|
|
}
|
|
|
.mb20 {
|
|
.mb20 {
|
|
|
- margin-bottom: px-to-rem(20);
|
|
|
|
|
|
|
+ margin-bottom: px-to-rem(20);
|
|
|
}
|
|
}
|
|
|
.page {
|
|
.page {
|
|
|
- margin-top: px-to-rem(20);
|
|
|
|
|
|
|
+ margin-top: px-to-rem(20);
|
|
|
text-align: right;
|
|
text-align: right;
|
|
|
}
|
|
}
|
|
|
.primaryBtn {
|
|
.primaryBtn {
|
|
@@ -252,16 +364,55 @@ export default {
|
|
|
}
|
|
}
|
|
|
.vIcon {
|
|
.vIcon {
|
|
|
width: px-to-rem(12);
|
|
width: px-to-rem(12);
|
|
|
- height: px-to-rem(12);
|
|
|
|
|
|
|
+ height: px-to-rem(12);
|
|
|
|
|
+ }
|
|
|
|
|
+ :deep(.el-form-item .el-form-item__label) {
|
|
|
|
|
+ color: #606266;
|
|
|
|
|
+ font-size: px-to-rem(14);
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ }
|
|
|
|
|
+ :deep(.el-range-editor.el-input__inner) {
|
|
|
|
|
+ border: px-to-rem(1) solid #dcdfe6;
|
|
|
|
|
+ }
|
|
|
|
|
+ :deep(.el-date-editor .el-range-separator) {
|
|
|
|
|
+ width: auto !important;
|
|
|
|
|
+ }
|
|
|
|
|
+ :deep(.el-range-editor.is-active),
|
|
|
|
|
+ :deep(.el-range-editor.is-active:hover),
|
|
|
|
|
+ :deep(.el-select .el-input.is-focus .el-input__inner),
|
|
|
|
|
+ :deep(.el-select .el-input__inner:focus),
|
|
|
|
|
+ :deep(.el-pagination__sizes .el-input .el-input__inner:hover) {
|
|
|
|
|
+ border-color: #a9a9a9;
|
|
|
|
|
+ }
|
|
|
|
|
+ :deep(.el-table th.el-table__cell) {
|
|
|
|
|
+ background-color: #f5f7fa;
|
|
|
|
|
+ }
|
|
|
|
|
+ :deep(.el-table th.el-table__cell > .cell) {
|
|
|
|
|
+ font-size: px-to-rem(14);
|
|
|
|
|
+ color: #515a6e;
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ }
|
|
|
|
|
+ :deep(.el-pagination .el-select .el-input .el-input__inner) {
|
|
|
|
|
+ font-size: px-to-rem(14);
|
|
|
|
|
+ border-radius: px-to-rem(4);
|
|
|
|
|
+ height: px-to-rem(26);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
:deep(.el-pager li.active) {
|
|
:deep(.el-pager li.active) {
|
|
|
background-color: rgba(240, 105, 106, 1) !important;
|
|
background-color: rgba(240, 105, 106, 1) !important;
|
|
|
}
|
|
}
|
|
|
|
|
+:deep(.el-radio input[aria-hidden='true']) {
|
|
|
|
|
+ display: none !important;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+:deep(.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner) {
|
|
|
|
|
+ box-shadow: none !important;
|
|
|
|
|
+}
|
|
|
.preview-image {
|
|
.preview-image {
|
|
|
max-width: px-to-rem(100);
|
|
max-width: px-to-rem(100);
|
|
|
max-height: px-to-rem(100);
|
|
max-height: px-to-rem(100);
|
|
|
margin-top: px-to-rem(10);
|
|
margin-top: px-to-rem(10);
|
|
|
border-radius: px-to-rem(4);
|
|
border-radius: px-to-rem(4);
|
|
|
|
|
+ margin-left: px-to-rem(10);
|
|
|
}
|
|
}
|
|
|
</style>
|
|
</style>
|