This commit is contained in:
2023-12-28 22:55:04 +08:00
parent 26fec1bf40
commit 06e68e8fc9
6 changed files with 1118 additions and 173 deletions

View File

@@ -1,23 +1,399 @@
<template>
<div class="main" style="text-shadow: 0 0 20px var(--font-border);overflow: scroll">
<div class="HeadLine" style="margin-top:30px;margin-left:15px;">
<div class="HeadSquare" ></div>
<div class="TitleFont" style="color:var(--theme-color)"><i class="el-icon-s-grid"></i>通知管理</div>
</div>
<div class="base-style" style="margin-top:20px;font-family: SimHei;font-size:18px;font-weight:600;margin-left:20px">
<el-row>
<el-col :span="24">
<el-button @click="openAddCategoryFun()" type="primary" plain size="medium" round >创建通知</el-button>
</el-col>
<!-- <el-col :span="24" style="margin-top:20px">-->
<!-- <el-input-->
<!-- placeholder="请输入内容"-->
<!-- v-model="searchCate"-->
<!-- clearable-->
<!-- style="width:200px">-->
<!-- </el-input>-->
<!-- <el-button type="success" plain size="medium" round style="margin-left:10px">查询</el-button>-->
<!-- </el-col>-->
</el-row>
<el-table class="MyTable"
:data="List"
header-row-class-name="table_header_class"
border>
<el-table-column
align="center"
prop="id"
label="通知编号"
width="150">
</el-table-column>
<el-table-column
align="center"
prop="title"
label="通知标题"
width="180">
</el-table-column>
<el-table-column
align="center"
prop="content"
label="通知内容"
width="160">
</el-table-column>
<el-table-column
align="center"
prop="url"
label="通知URL"
width="100">
</el-table-column>
<el-table-column
align="center"
prop="createtime"
label="创建时间"
width="120">
</el-table-column>
<el-table-column
align="center"
prop="urlNumber"
label="包含网址数"
width="100">
</el-table-column>
<!-- <el-table-column align="center" key="status" prop="status" label="启用状态" width="90" >-->
<!-- <template slot-scope="scope">-->
<!-- <el-switch-->
<!-- v-model="scope.row.status"-->
<!-- :active-value="0"-->
<!-- :inactive-value="1"-->
<!-- active-color="#13ce66"-->
<!-- inactive-color="#ff4949"-->
<!-- disabled-->
<!-- >-->
<!-- </el-switch>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column align="center" key="needLogin" prop="needLogin" label="公开状态" width="90">-->
<!-- <template slot-scope="scope">-->
<!-- <el-switch-->
<!-- v-model="scope.row.needLogin"-->
<!-- :active-value="1"-->
<!-- :inactive-value="0"-->
<!-- active-color="#13ce66"-->
<!-- inactive-color="#ff4949"-->
<!-- disabled-->
<!-- >-->
<!-- </el-switch>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column-->
<!-- align="center"-->
<!-- prop="weigh"-->
<!-- label="权重"-->
<!-- width="80">-->
<!-- </el-table-column>-->
<el-table-column prop="date" label="操作" width="100">
<template slot-scope="scope">
<div class="ButtonBlock">
<img class="MyButton" @click="handleDelete(scope.row)"
src="../../../assets/img/DeleteButton.svg" style="width:60px">
</div>
</template>
</el-table-column>
</el-table>
<el-dialog title="新增公告" :visible.sync="openAddCategory" width="30%"
append-to-body
:close-on-click-modal="false"
:before-close="closeDialog"
>
<el-form ref="form" :rules="rules" class="login_container" :model="form"
style="margin-top:-10px" status-icon label-width="100px" >
<el-form-item label="公告标题" prop="title">
<el-input v-model="form.title" placeholder='公告标题' clearable></el-input>
</el-form-item>
<el-form-item label="公告内容" prop="content" >
<el-input v-model="form.content" placeholder='公告内容' clearable ></el-input>
</el-form-item>
<el-form-item label="公告链接" prop="url">
<el-input v-model="form.url" placeholder='公告连接' clearable ></el-input>
</el-form-item>
<el-form-item>
<div style="display: flex;flex-direction: row;align-items: center;flex-wrap: nowrap;justify-content: space-between">
<el-button @click="addCategory('form')" type="primary" style=";margin-top:10px">确认</el-button>
</div>
</el-form-item>
</el-form>
</el-dialog>
</div>
</div>
</template>
<script>
import axios from "axios";
import Vue from "vue";
export default {
name: "NoticeManage",
data() {
return {}
return {
// 表头名字:
titlename:null,
// 新增目录页面:
openAddCategory:false,
// 对话框显示:
dialogVisible:false,
// 允许对话框修改:
isEdit:true,
searchCate:'',
userId:null,
List:[],
form:{
title: null,
content: null,
url: null,
},
// 校验规则
rules: {
title: [{ required: 'true', message: '请输入通标题', trigger: 'blur' }],
content: [{ required: 'true', message: '请输入通知内容', trigger: 'blur' }],
// needLogin: [{ required: 'true', message: '请完善信息', trigger: 'blur' }],
// status: [{ required: 'true', message: '请输入是否启用', trigger: 'blur' }],
url: [{ required: 'true', message: '请慎入跳转连接', trigger: 'blur' }],
}
}
},
mounted() {
this.getFormatDate();
},
created() {
this.getUserInfo();
// this.GetData();
},
computed: {},
methods: {}
methods: {
// 删除网址:
handleDelete(index) {
var that=this;
this.$confirm('此操作将永久删除该通知, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
axios({
method: 'get',
// 请求的地址
url: '/api/notice/delete',
// URL 中的查询参数
params: {
id: index.id,
}
}).then(function (res) {
if (res.data.code === 500) {
Vue.prototype.$notify.error({
title: '错误',
message: res.data.msg,
offset: 50
});
} else {
Vue.prototype.$notify({
title: '成功',
message: ('i', {style: 'color: teal'}, "删除成功"),
type: 'success',
offset: 50
});
that.GetData();
}
});
}).catch(() => {
// 点击取消:不删除了
this.$message({
type: 'info',
message: '已取消删除'
});
});
},
// 关闭弹出对话框之前:
closeDialog() {
var that = this;
// 先重置
this.GetData();
//表单重置
that.form = {
title: null,
content: null,
url: null,
}
// 后关闭
this.dialogVisible = false;
this.openAddCategory=false;
that.getUserInfo();
},
// 新增按钮:
openAddCategoryFun(){
var _this = this;
// console.log(_this.List);
_this.titlename="新增通知";
this.openAddCategory=true;
},
// 编辑按钮:
handleEdit(index) {
var _this = this;
this.openAddCategoryFun();
_this.titlename="编辑通知";
// 深拷贝
this.form = index;
},
// 提交新增:
addCategory(rulelist){
var _this = this;
_this.$refs[rulelist].validate((valid)=>{
if(valid){
axios({
method: 'post',
// 请求的地址
url: '/api/notice/add',
// URL 中的查询参数
params: {
title: this.form.title,
content: this.form.content,
url: this.form.url,
}
}).then(function (res) {
if (res.data.code === 500) {
Vue.prototype.$notify.error({
title: '错误',
message: res.data.msg,
offset: 50
});
} else {
_this.closeDialog();
Vue.prototype.$notify({
title: '成功',
message: ('i', {style: 'color: teal'}, "更新成功!"),
type: 'success',
offset: 50
});
}
}).catch((error)=>{
})
}
})
//调用方法提交
},
// 时间转换:
getFormatDate() {
var that = this;
console.log(that.List.length + "changdu");
for(let i = 0 ; i < that.List.length; i++){
var date = new Date(that.List[i].createtime);// 时间戳为10位需*1000时间戳为13位的话不需乘1000
var Y = date.getFullYear() + '年';
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '月';
var D = date.getDate() + '日 ';
console.log("date: " + Y + M + D);
that.List[i].createtime = "" + Y + M + D;
}
},
// 获取条数:
hIndex(index){
var linenum = parseInt( parseInt(index) + parseInt(1))
return linenum;
},
// 获取用户ID
getUserInfo() {
let _this = this;
if(localStorage.getItem("Authorization") && localStorage.getItem("userId")){
_this.userId = localStorage.getItem("userId")
_this.GetData();
} else {
Vue.prototype.$notify.error({
title: '错误',
message: "登录状态失效,请重新登录!",
offset: 0
});
}
},
GetData(){
// 获取数据
var that = this;
axios({
method:'get',
url:'/api/notice/select',
params:{
}
}).then(function(res){
that.List = res.data;
for(let i = 0 ; i < that.List.length; i++){
var date = new Date(that.List[i].createtime);// 时间戳为10位需*1000时间戳为13位的话不需乘1000
var Y = date.getFullYear() + '年';
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '月';
var D = date.getDate() + '日 ';
that.List[i].createtime = "" + Y + M + D;
}
})
// /selectAllArticleByadmin
that.form.userId = that.userId;
},
}
}
</script>
<style scoped>
.base-style{
display: flex;
flex-direction: column;
}
/**表格样式,直接复制**/
::v-deep .table_header_class th{
background-color: var(--table-bg-color)!important;
color:var(--theme-color);
text-align: center;
}
.MyTable{
margin-top:10px;
width: 100%;
background-color:var(--table-bg-color);
color:var(--theme-color);
border-radius: 5px;
}
::v-deep .el-table__body tr:hover > td {
background-color: var(--table-bg-color-hover) !important;
}
::v-deep .el-table tr,
.el-table th.el-table__cell {
background-color: var(--table-bg-color);
border: var(--table-border) solid 3px;
}
::v-deep .el-table--border{
border: var(--table-border) solid 3px;
}
.login_container {
width: 400px;
border: 1px solid #eaeaea;
margin: 100px auto;
padding: 35px 35px 15px 35px;
box-sizing: border-box;
border-radius: 15px;
background-color: #fff;
box-shadow: 0 0 25px #cac6c6;
.login_title{
color: #505458;
text-align: center;
margin-bottom: 40px;}
}
::v-deep .el-dialog__body{
background-image: url("../../../assets/img/SkyPic.jpg");
margin-top:15px;
height:400px;
}
</style>