<template>
<div>
<div>
<el-form ref="form" :model="form" label-width="80px">
<el-form-item label="">
标题
<el-input v-model="form.title" style="width: 200px"></el-input>
创建人
<el-input v-model="form.resname" style="width: 200px"></el-input>
创建时间
<el-date-picker
v-model="startEndTime"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
<el-button type="primary" @click="findBulletinAll">搜索</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="openSaveDialog()"
>新增公告</el-button
>
</el-form-item>
</el-form>
</div>
<div>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="title" label="标题"> </el-table-column>
<el-table-column prop="content" label="内容">
<template slot-scope="scope">
{{ scope.row.content.substring(0, 6) }}...
</template>
</el-table-column>
<el-table-column prop="userName" label="创建人"> </el-table-column>
<el-table-column prop="createTime" label="创建时间">
<template slot-scope="scope">
{{ formatTime(scope.row.createTime) }}
</template>
</el-table-column>
<el-table-column prop="pic" label="封面">
<template slot-scope="scope">
<img
v-bind:src="scope.row.pic"
alt=""
style="width: 100px; height: 80px"
/>
</template>
</el-table-column>
<el-table-column prop="" label="操作">
<template slot-scope="scope">
<el-button
type="primary"
circle
@click="openUpdateDialog(scope.row.id)"
>编辑</el-button
>
<el-button type="danger" circle @click="deleteById(scope.row.id)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</div>
<div>
<!-- 新增 -->
<el-dialog title="输入反馈信息" :visible.sync="dialogFormVisible">
<el-form :model="saveForm" ref="formRef">
<el-form-item label="封面">
<el-upload
class="avatar-uploader"
action="http://localhost:8081/file/upload"
:show-file-list="false"
:on-success="handleAvatarSuccessSave"
:before-upload="beforeAvatarUpload"
style="width: 200px"
>
<img v-if="saveForm.pic" :src="saveForm.pic" class="avatar" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<el-form-item label="标题">
<el-input v-model="saveForm.title" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="内容">
<el-input v-model="saveForm.content" autocomplete="off"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">取 消</el-button>
<el-button type="primary" @click="saveBulletin">确 定</el-button>
</div>
</el-dialog>
</div>
<div>
<!-- 修改 -->
<el-dialog title="输入反馈信息" :visible.sync="dialogFormVisible2">
<el-form :model="updateForm" ref="formRef">
<el-form-item label="封面">
<el-upload
class="avatar-uploader"
action="http://localhost:8081/file/upload"
:show-file-list="false"
:on-success="handleAvatarSuccessUpdate"
:before-upload="beforeAvatarUpload"
style="width: 200px"
>
<img v-if="updateForm.pic" :src="updateForm.pic" class="avatar" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<el-form-item label="标题">
<el-input v-model="updateForm.title" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="内容">
<el-input
v-model="updateForm.content"
autocomplete="off"
></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible2 = false">取 消</el-button>
<el-button type="primary" @click="updateById">确 定</el-button>
</div>
</el-dialog>
</div>
<!-- 分页组件 -->
<el-pagination
background
layout="prev, pager, next"
:total="total"
:page-size="pageSize"
:current-page="pageNum"
@current-change="handlePageChange"
></el-pagination>
</div>
</template>
<script>
import { findBulletinAll } from "@/api/admin";
import { deleteById } from "@/api/admin";
import { saveOrUpdateBulletin } from "@/api/admin";
import { findBulletinById } from "@/api/admin";
export default {
name: "adminBulletin",
data() {
return {
dialogFormVisible: false,
dialogFormVisible2: false,
pageNum: 1,
pageSize: 6,
total: 0,
pic: "",
startEndTime: "",
form: {
startTime: "",
endTime: "",
title: "",
resname: "",
page: "",
size: "",
},
tableData: [],
saveForm: {
userId: localStorage.getItem("userId"),
pic: "",
title: "",
content: "",
},
updateForm: {
id: "",
userId: localStorage.getItem("userId"),
pic: "",
title: "",
content: "",
},
};
},
created() {
this.findBulletinAll();
},
methods: {
findBulletinAll() {
console.log(this.form);
this.form.page = this.pageNum;
this.form.size = this.pageSize;
this.form.startTime = this.formatDate(this.startEndTime[0]);
this.form.endTime = this.formatDate(this.startEndTime[1]);
findBulletinAll(this.form).then((resp) => {
console.log(resp.data.data.list.list);
this.tableData = resp.data.data.list.list;
this.total = resp.data.total;
});
},
openSaveDialog() {
this.dialogFormVisible = true;
},
saveBulletin() {
saveOrUpdateBulletin(this.saveForm).then((resp) => {
if (resp.data.code == 200) {
this.$message.success(resp.data.message);
} else {
this.$message.error(resp.data.message);
}
location.reload();
});
},
openUpdateDialog(id) {
this.dialogFormVisible2 = true;
findBulletinById(id).then((resp) => {
this.updateForm = resp.data.data.bulletin;
this.pic = resp.data.data.bulletin.pic;
});
},
updateById() {
saveOrUpdateBulletin(this.updateForm).then((resp) => {
if (resp.data.code == 200) {
this.$message.success(resp.data.message);
} else {
this.$message.error(resp.data.message);
}
location.reload();
});
},
deleteById(id) {
deleteById(id).then((resp) => {
if (resp.data.code == 200) {
this.$message.success(resp.data.message);
} else {
this.$message.error(resp.data.message);
}
location.reload();
});
},
handlePageChange(page) {
this.pageNum = page;
this.findBulletinAll();
},
formatDate(date) {
if (!date) return "";
const year = date.getFullYear();
const month = (date.getMonth() + 1).toString().padStart(2, "0");
const day = date.getDate().toString().padStart(2, "0");
const hours = date.getHours().toString().padStart(2, "0");
const minutes = date.getMinutes().toString().padStart(2, "0");
const seconds = date.getSeconds().toString().padStart(2, "0");
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
},
formatTime(timeStr) {
const date = new Date(timeStr);
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, "0");
const day = String(date.getDate()).padStart(2, "0");
const hours = String(date.getHours()).padStart(2, "0");
const minutes = String(date.getMinutes()).padStart(2, "0");
const seconds = String(date.getSeconds()).padStart(2, "0");
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
},
//图片回显
handleAvatarSuccessSave(res) {
this.saveForm.pic = res.data.url;
},
//图片回显
handleAvatarSuccessUpdate(res) {
this.updateForm.pic = res.data.url;
},
//设置文件格式
beforeAvatarUpload(file) {
const isLt2M = file.size / 1024 / 1024 < 10;
if (!isLt2M) {
this.$message.error("上传头像图片大小不能超过 2MB!");
}
return isLt2M;
},
},
};
</script>
美化,风格统一,很漂亮那种
最新发布