first commit
This commit is contained in:
@@ -0,0 +1,638 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.el-msg-active {
|
||||
background-color: #546478;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.note {
|
||||
width: 100%;
|
||||
height: 320px;
|
||||
}
|
||||
</style>
|
||||
<link href="${base!}/assets/platform/plugins/umeditor/themes/default/css/umeditor.min.css" type="text/css"
|
||||
rel="stylesheet">
|
||||
<script src="${base!}/assets/platform/plugins/umeditor/umeditor.config.js"></script>
|
||||
<script src="${base!}/assets/platform/plugins/umeditor/umeditor.js"></script>
|
||||
<div id="app" v-cloak>
|
||||
<guava>
|
||||
<el-card shadow="never">
|
||||
<div class="btn-group tool-button mt5">
|
||||
<a :class="{'el-msg-active':'all'==pageForm.searchType}"
|
||||
class="el-button el-button--default el-button--medium" data-pjax
|
||||
href="${base}/platform/sys/msg">
|
||||
全部类型消息
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<a :class="{'el-msg-active':'system'==pageForm.searchType}"
|
||||
class="el-button el-button--default el-button--medium"
|
||||
data-pjax
|
||||
href="${base}/platform/sys/msg/list/system">
|
||||
系统消息
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<a :class="{'el-msg-active':'user'==pageForm.searchType}"
|
||||
class="el-button el-button--default el-button--medium"
|
||||
data-pjax
|
||||
href="${base}/platform/sys/msg/list/user">
|
||||
用户消息
|
||||
</a>
|
||||
</div>
|
||||
<div class="pull-right offscreen-right mt5">
|
||||
<el-button @click="openAdd" size="medium"><i class="ti-plus"></i> 发送消息</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
<el-card class="mt10" shadow="never">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
:default-sort="{prop: 'createdAt', order: 'descending'}"
|
||||
@sort-change='pageOrder'
|
||||
header-align="center"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-table-column type="expand">
|
||||
<template slot-scope="scope">
|
||||
<el-form class="el-table-expand-line" inline label-position="left" size="mini">
|
||||
<el-form-item label="标题">
|
||||
<span>{{ scope.row.title }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="链接">
|
||||
<span>{{ scope.row.url }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item :show-overflow-tooltip="true" label="内容">
|
||||
<span v-html="scope.row.note"></span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="消息类型"
|
||||
prop="type" sortable>
|
||||
<template slot-scope="scope">
|
||||
<span v-if="'system'==scope.row.type">系统消息</span>
|
||||
<span v-if="'user'==scope.row.type">用户消息</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
:show-overflow-tooltip="true"
|
||||
header-align="center"
|
||||
label="标题"
|
||||
prop="title">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="总接收用户" prop="all_num">
|
||||
<template slot-scope="scope">
|
||||
<el-button @click="viewUserList('all',scope.row.id)" size="small">{{scope.row.all_num}}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="未读用户" prop="unread_num">
|
||||
<template slot-scope="scope">
|
||||
<el-button @click="viewUserList('unread',scope.row.id)" size="small">{{scope.row.unread_num}}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
header-align="center"
|
||||
label="发送时间"
|
||||
prop="createdAt"
|
||||
sortable>
|
||||
<template slot-scope="scope">
|
||||
{{formatAt(scope.row.createdAt)}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="消息状态"
|
||||
prop="delFlag" sortable>
|
||||
<template slot-scope="scope">
|
||||
<el-alert
|
||||
:center="true"
|
||||
:closable="false"
|
||||
style="width: 90px;"
|
||||
title="已删除"
|
||||
type="error"
|
||||
v-if="scope.row.delFlag">
|
||||
</el-alert>
|
||||
<el-alert
|
||||
:center="true"
|
||||
:closable="false"
|
||||
style="width: 90px;"
|
||||
title="已发送"
|
||||
type="success"
|
||||
v-if="!scope.row.delFlag">
|
||||
</el-alert>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="操作"
|
||||
width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-dropdown @command="dropdownCommand">
|
||||
<el-button size="mini">
|
||||
<i class="ti-settings"></i>
|
||||
<span class="ti-angle-down"></span>
|
||||
</el-button>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item :command="{type:'delete',id:scope.row.id,name:scope.row.title}">
|
||||
删除
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-size="pageForm.pageSize"
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:total="pageForm.totalCount"
|
||||
@current-change="pageNumberChange"
|
||||
@size-change="pageSizeChange"
|
||||
layout="total, sizes, prev, pager, next, jumper">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</guava>
|
||||
|
||||
<el-dialog
|
||||
:title="viewUserTitle"
|
||||
:visible.sync="viewDialogVisible"
|
||||
width="65%">
|
||||
<el-table
|
||||
:data="viewTableData"
|
||||
@sort-change='viewPageOrder'
|
||||
header-align="center"
|
||||
style="width: 100%;margin-top: 10px;margin-bottom: 10px;"
|
||||
:default-sort="{prop: 'createdAt', order: 'descending'}"
|
||||
size="small"
|
||||
>
|
||||
<el-table-column
|
||||
fixed
|
||||
prop="loginname"
|
||||
label="用户名"
|
||||
width="150">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="username"
|
||||
label="姓名"
|
||||
width="120">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="mobile"
|
||||
label="手机">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="email"
|
||||
label="邮箱">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="unitname"
|
||||
label="所属单位">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
@size-change="viewPageSizeChange"
|
||||
@current-change="viewPageNumberChange"
|
||||
:current-page="viewPageForm.pageNumber"
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:page-size="viewPageForm.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="viewPageForm.totalCount">
|
||||
</el-pagination>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="viewDialogVisible = false"> 关 闭 </el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
title="选择用户"
|
||||
:visible.sync="selectDialogVisible"
|
||||
width="65%">
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-input placeholder="请输入内容" v-model="selectPageForm.searchKeyword" @keyup.enter.native="doSearch">
|
||||
<el-select v-model="selectPageForm.searchName" slot="prepend" placeholder="查询类型" style="width: 120px;">
|
||||
<el-option label="用户名" value="loginname"></el-option>
|
||||
<el-option label="姓名" value="username"></el-option>
|
||||
<el-option label="手机" value="mobile"></el-option>
|
||||
<el-option label="邮箱" value="email"></el-option>
|
||||
</el-select>
|
||||
<el-button slot="append" icon="el-icon-search" @click="doSelectSearch"></el-button>
|
||||
|
||||
</el-input>
|
||||
</div>
|
||||
<el-table
|
||||
:data="selectTableData"
|
||||
@sort-change='selectPageOrder'
|
||||
header-align="center"
|
||||
style="width: 100%;margin-top: 10px;margin-bottom: 10px;"
|
||||
:default-sort="{prop: 'createdAt', order: 'descending'}"
|
||||
@selection-change="handleSelectionChange"
|
||||
size="mini"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="35">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
fixed
|
||||
prop="loginname"
|
||||
label="用户名"
|
||||
width="150">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="username"
|
||||
label="姓名"
|
||||
width="120">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="mobile"
|
||||
label="手机"
|
||||
width="120">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="email"
|
||||
label="邮箱"
|
||||
width="120">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="unit"
|
||||
label="所属单位">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.unit!=null">
|
||||
{{scope.row.unit.name}}
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
@size-change="selectPageSizeChange"
|
||||
@current-change="selectPageNumberChange"
|
||||
:current-page="selectPageForm.pageNumber"
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:page-size="selectPageForm.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="selectPageForm.totalCount">
|
||||
</el-pagination>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="selectDialogVisible = false"> 取 消 </el-button>
|
||||
<el-button type="primary" @click="doSelect"> 确 定 </el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
title="发送消息"
|
||||
:visible.sync="addDialogVisible"
|
||||
width="60%">
|
||||
<el-form :model="formData" ref="addForm" :rules="formRules" size="small" label-width="80px">
|
||||
<el-form-item prop="title" label="标题">
|
||||
<el-input maxlength="255" placeholder="标题"
|
||||
v-model="formData.title"
|
||||
auto-complete="off" tabindex="1" type="text"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item prop="url" label="链接地址">
|
||||
<el-input placeholder="链接地址"
|
||||
v-model="formData.url"
|
||||
auto-complete="off" tabindex="2" type="text"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item prop="type" label="消息类型">
|
||||
<el-radio-group v-model="formData.type">
|
||||
<el-radio label="system">系统消息</el-radio>
|
||||
<el-radio label="user">用户消息</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="用户列表" v-if="'user'==formData.type">
|
||||
<el-row>
|
||||
<el-button icon="el-icon-search" @click="openSelect">选择用户</el-button>
|
||||
<el-button icon="el-icon-delete" @click="clearSelect" type="danger">清空用户</el-button>
|
||||
|
||||
</el-row>
|
||||
<el-table
|
||||
:data="userTableData"
|
||||
style="width: 100%"
|
||||
size="small"
|
||||
height="200">
|
||||
<el-table-column
|
||||
fixed
|
||||
prop="loginname"
|
||||
label="用户名"
|
||||
width="150">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="username"
|
||||
label="姓名"
|
||||
width="120">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="mobile"
|
||||
label="手机号"
|
||||
width="120">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="unit"
|
||||
label="所属单位">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.unit!=null">
|
||||
{{scope.row.unit.name}}
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
<el-form-item prop="note" label="消息内容">
|
||||
<!---->
|
||||
<script type="text/plain" id="note" class="note"></script>
|
||||
<!---->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="addDialogVisible = false"> 取 消 </el-button>
|
||||
<el-button type="primary" @click="doAdd"> 确 定 </el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
<script>
|
||||
var wo_shi_zhan_wei_fu;
|
||||
new Vue({
|
||||
el: "#app",
|
||||
data: function () {
|
||||
return {
|
||||
addDialogVisible: false,
|
||||
editDialogVisible: false,
|
||||
selectDialogVisible: false,
|
||||
viewDialogVisible: false,
|
||||
tableData: [],
|
||||
pageForm: {
|
||||
searchType: GetQueryString('type'),
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: "createdAt",
|
||||
pageOrderBy: "descending"
|
||||
},
|
||||
formData: {
|
||||
id: "",
|
||||
type: "system"
|
||||
},
|
||||
formRules: {
|
||||
title: [
|
||||
{required: true, message: '标题', trigger: 'blur'}
|
||||
],
|
||||
},
|
||||
selectPageForm: {
|
||||
searchName: "",
|
||||
searchKeyword: "",
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: "loginname",
|
||||
pageOrderBy: "ascending"
|
||||
},
|
||||
selectTableData: [
|
||||
{loginname: 'xxx', realname: "xx", unitname: "ccccccc"}
|
||||
],
|
||||
userTableData: [],
|
||||
selectUsers: [],
|
||||
viewTableData: [],
|
||||
viewUserTitle: "",
|
||||
viewPageForm: {
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: "loginname",
|
||||
pageOrderBy: "descending",
|
||||
type: "",
|
||||
id: ""
|
||||
},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
pageOrder: function (column) {//按字段排序
|
||||
this.pageForm.pageOrderName = column.prop;
|
||||
this.pageForm.pageOrderBy = column.order;
|
||||
this.pageData();
|
||||
},
|
||||
pageNumberChange: function (val) {//页码更新操作
|
||||
this.pageForm.pageNumber = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageSizeChange: function (val) {//分页大小更新操作
|
||||
this.pageForm.pageSize = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageData: function () {//加载分页数据
|
||||
var self = this;
|
||||
sublime.showLoadingbar();//显示loading
|
||||
$.post(base + "/platform/sys/msg/data", self.pageForm, function (data) {
|
||||
sublime.closeLoadingbar();//关闭loading
|
||||
if (data.code == 0) {
|
||||
self.tableData = data.data.list;
|
||||
self.pageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
selectPageOrder: function (column) {//按字段排序
|
||||
this.selectPageForm.pageOrderName = column.prop;
|
||||
this.selectPageForm.pageOrderBy = column.order;
|
||||
this.selectPageData();
|
||||
},
|
||||
selectPageNumberChange: function (val) {//页码更新操作
|
||||
this.selectPageForm.pageNumber = val;
|
||||
this.selectPageData();
|
||||
},
|
||||
selectPageSizeChange: function (val) {//分页大小更新操作
|
||||
this.selectPageForm.pageSize = val;
|
||||
this.selectPageData();
|
||||
},
|
||||
doSelectSearch: function () {
|
||||
this.selectPageForm.pageNumber = 1;
|
||||
this.selectPageData();
|
||||
},
|
||||
selectPageData: function () {//加载分页数据
|
||||
var self = this;
|
||||
$.post(base + "/platform/sys/msg/user_data", self.selectPageForm, function (data) {
|
||||
if (data.code == 0) {
|
||||
self.selectTableData = data.data.list;
|
||||
self.selectPageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
handleSelectionChange: function (val) {
|
||||
this.selectUsers = val;
|
||||
},
|
||||
formatAt: function (val) {
|
||||
if (val && val > 0)
|
||||
return moment(val).format("YYYY-MM-DD HH:mm");
|
||||
return "";
|
||||
},
|
||||
doSearch: function (val) {
|
||||
this.pageForm.pageNumber = 1;
|
||||
this.pageData();
|
||||
},
|
||||
openSelect: function () {
|
||||
this.selectDialogVisible = true;
|
||||
this.selectPageData();
|
||||
},
|
||||
clearSelect: function () {
|
||||
this.userTableData = [];
|
||||
},
|
||||
doSelect: function () {
|
||||
var self = this;
|
||||
this.selectDialogVisible = false;
|
||||
this.selectUsers.forEach(function (o) {
|
||||
self.userTableData.push(o);
|
||||
});
|
||||
},
|
||||
openAdd: function () {
|
||||
var self = this;
|
||||
this.addDialogVisible = true;
|
||||
this.formData = {
|
||||
id: "", type: "system"
|
||||
};//打开新增窗口,表单先清空
|
||||
if (this.$refs["addForm"])
|
||||
this.$refs["addForm"].resetFields();
|
||||
UM.getEditor("note");
|
||||
setTimeout(function () {
|
||||
UM.getEditor("note").setContent("",false);
|
||||
},200);
|
||||
},
|
||||
doAdd: function () {
|
||||
var self = this;
|
||||
self.$refs["addForm"].validate(function (valid) {
|
||||
if (valid) {
|
||||
var users = [];
|
||||
if (self.selectUsers) {
|
||||
self.selectUsers.forEach(function (o) {
|
||||
users.push(o.loginname);
|
||||
});
|
||||
}
|
||||
if (self.formData.type == 'user' && users.length == 0) {
|
||||
self.$message({
|
||||
message: "请选择用户",
|
||||
type: 'error'
|
||||
});
|
||||
return false;
|
||||
}
|
||||
$.post(base + "/platform/sys/msg/addDo", {
|
||||
note: UM.getEditor("note").getContent(),
|
||||
msg: JSON.stringify(self.formData),
|
||||
users: users.toString()
|
||||
}, function (data) {
|
||||
if (data.code == 0) {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'success'
|
||||
});
|
||||
self.addDialogVisible = false;
|
||||
} else {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
self.pageData();//添加失败也可以入库,所以加载一下看看
|
||||
}, "json");
|
||||
}
|
||||
});
|
||||
},
|
||||
viewPageOrder: function (column) {//按字段排序
|
||||
this.viewPageForm.pageOrderName = column.prop;
|
||||
this.viewPageForm.pageOrderBy = column.order;
|
||||
this.viewPageLoad();
|
||||
},
|
||||
viewPageNumberChange: function (val) {//页码更新操作
|
||||
this.viewPageForm.pageNumber = val;
|
||||
this.viewPageLoad();
|
||||
},
|
||||
viewPageSizeChange: function (val) {//分页大小更新操作
|
||||
this.viewPageForm.pageSize = val;
|
||||
this.viewPageLoad();
|
||||
},
|
||||
viewPageLoad: function () {//加载分页数据
|
||||
var self = this;
|
||||
$.post(base + "/platform/sys/msg/user_view_data", self.viewPageForm, function (data) {
|
||||
if (data.code == 0) {
|
||||
self.viewTableData = data.data.list;
|
||||
self.viewPageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
viewUserList: function (type, id) {
|
||||
var self = this;
|
||||
if ("all" == type) {
|
||||
self.viewUserTitle = "全部用户";
|
||||
}
|
||||
if ("unread" == type) {
|
||||
self.viewUserTitle = "未读用户";
|
||||
}
|
||||
self.viewDialogVisible = true;
|
||||
self.viewPageForm.type = type;
|
||||
self.viewPageForm.id = id;
|
||||
self.viewPageLoad();
|
||||
},
|
||||
dropdownCommand: function (command) {//监听下拉框事件
|
||||
var self = this;
|
||||
if ("delete" == command.type) {
|
||||
self.$confirm('此操作将删除 ' + command.name, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: function (a, b) {
|
||||
if ("confirm" == a) {//确认后再执行
|
||||
$.post(base + "/platform/sys/msg/delete/" + command.id, {}, function (data) {
|
||||
if (data.code == 0) {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'success'
|
||||
});
|
||||
self.doSearch();
|
||||
} else {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
created: function () {
|
||||
this.pageData();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,41 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<div style="padding: 10px">
|
||||
<header class="header navbar bg-white shadow">
|
||||
<div class="btn-group tool-button m5">
|
||||
<a class="el-button el-button--default el-button--medium" href="${base}/platform/sys/msg/user/all" data-pjax><i
|
||||
class="ti-angle-left"></i>返回</a>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-wrap">
|
||||
<div class="wrapper" style="min-height:500px;">
|
||||
<section class="panel">
|
||||
<div class="row mb10">
|
||||
<div class="col-lg-12">
|
||||
<!--#if(!isEmpty(obj)){#-->
|
||||
<div style="text-align:center">
|
||||
<h4>${obj.title!}</h4>
|
||||
</div>
|
||||
<div style="text-align:center;font-size: 14px;line-height: 24px;">
|
||||
${@date.getDate(obj.sendAt)}
|
||||
</div>
|
||||
<div style="margin-top: 16px !important;border-bottom: 1px solid #DDD;"></div>
|
||||
<div style="margin-top: 16px !important;">
|
||||
${obj.note!}
|
||||
</div>
|
||||
<!--#}else{#-->
|
||||
消息不存在,或您没有阅读权限!
|
||||
<!--#}#-->
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,37 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<header class="header navbar bg-white shadow">
|
||||
<div class="btn-group tool-button m5">
|
||||
<a class="el-button el-button--default el-button--medium" href="${base}/platform/sys/msg/user/read" data-pjax><i
|
||||
class="ti-angle-left"></i>返回</a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-wrap">
|
||||
<div class="wrapper" style="min-height:500px;">
|
||||
<section class="panel">
|
||||
<div class="row mb10">
|
||||
<div class="col-lg-12">
|
||||
<!--#if(!isEmpty(obj)){#-->
|
||||
<div style="text-align:center">
|
||||
<h4>${obj.title!}</h4>
|
||||
</div>
|
||||
<div style="text-align:center;font-size: 14px;line-height: 24px;">
|
||||
${@date.getDate(obj.sendAt)}
|
||||
</div>
|
||||
<div style="margin-top: 16px !important;border-bottom: 1px solid #DDD;"></div>
|
||||
<div style="margin-top: 16px !important;">
|
||||
${obj.note!}
|
||||
</div>
|
||||
<!--#}else{#-->
|
||||
消息不存在,或您没有阅读权限!
|
||||
<!--#}#-->
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,37 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<header class="header navbar bg-white shadow">
|
||||
<div class="btn-group tool-button m5">
|
||||
<a class="el-button el-button--default el-button--medium" href="${base}/platform/sys/msg/user/unread" data-pjax><i
|
||||
class="ti-angle-left"></i>返回</a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-wrap">
|
||||
<div class="wrapper" style="min-height:500px;">
|
||||
<section class="panel">
|
||||
<div class="row mb10">
|
||||
<div class="col-lg-12">
|
||||
<!--#if(!isEmpty(obj)){#-->
|
||||
<div style="text-align:center">
|
||||
<h4>${obj.title!}</h4>
|
||||
</div>
|
||||
<div style="text-align:center;font-size: 14px;line-height: 24px;">
|
||||
${@date.getDate(obj.sendAt)}
|
||||
</div>
|
||||
<div style="margin-top: 16px !important;border-bottom: 1px solid #DDD;"></div>
|
||||
<div style="margin-top: 16px !important;">
|
||||
${obj.note!}
|
||||
</div>
|
||||
<!--#}else{#-->
|
||||
消息不存在,或您没有阅读权限!
|
||||
<!--#}#-->
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,290 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.el-msg-active {
|
||||
background-color: #546478;
|
||||
color: #ffffff;
|
||||
}
|
||||
</style>
|
||||
<div id="app" v-cloak>
|
||||
<guava>
|
||||
<el-card shadow="never">
|
||||
<div class="btn-group tool-button">
|
||||
<a href="${base}/platform/sys/msg/user/all" data-pjax class="el-button el-button--default el-button--medium"
|
||||
:class="{'el-msg-active':'all'==pageForm.searchType}">
|
||||
全部类型消息
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group tool-button">
|
||||
<a href="${base}/platform/sys/msg/user/all?type=system" data-pjax
|
||||
class="el-button el-button--default el-button--medium"
|
||||
:class="{'el-msg-active':'system'==pageForm.searchType}">
|
||||
系统消息<span v-if="unreadnum.system>0">({{unreadnum.system}})</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group tool-button">
|
||||
<a href="${base}/platform/sys/msg/user/all?type=user" data-pjax
|
||||
class="el-button el-button--default el-button--medium"
|
||||
:class="{'el-msg-active':'user'==pageForm.searchType}">
|
||||
用户消息<span v-if="unreadnum.user>0">({{unreadnum.user}})</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="pull-right offscreen-right">
|
||||
<el-button size="medium" @click="readMore" :disabled="selectData.length==0">标记已读</el-button>
|
||||
<el-button size="medium" @click="readAll" :disabled="tableData.length==0">全部已读</el-button>
|
||||
<el-button size="medium" @click="delMore" type="danger" :disabled="selectData.length==0"><i
|
||||
class="el-icon-delete"></i>删除
|
||||
</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
<el-card shadow="never" class="mt10">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
@sort-change='pageOrder'
|
||||
size="small"
|
||||
header-align="center"
|
||||
style="width: 100%"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="35">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="status"
|
||||
width="45">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="0==scope.row.status"><i class="fa fa-circle text-info ml5"></i></span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="type"
|
||||
label="消息类型"
|
||||
header-align="center" align="center" width="120">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="'system'==scope.row.type">系统消息</span>
|
||||
<span v-if="'user'==scope.row.type">用户消息</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="title"
|
||||
label="标题"
|
||||
header-align="center"
|
||||
:show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<a :href="'${base}/platform/sys/msg/user/all/detail/'+scope.row.msgid"
|
||||
data-pjax>{{scope.row.title}}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="opat"
|
||||
label="接收时间"
|
||||
header-align="center" align="center">
|
||||
<template slot-scope="scope">
|
||||
{{formatAt(scope.row.opat)}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
style="float: left"
|
||||
@size-change="pageSizeChange"
|
||||
@current-change="pageNumberChange"
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:page-size="pageForm.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="pageForm.totalCount">
|
||||
</el-pagination>
|
||||
</el-card>
|
||||
</guava>
|
||||
</div>
|
||||
<script>
|
||||
new Vue({
|
||||
el: "#app",
|
||||
data: function () {
|
||||
return {
|
||||
addDialogVisible: false,
|
||||
editDialogVisible: false,
|
||||
selectDialogVisible: false,
|
||||
viewDialogVisible: false,
|
||||
tableData: [],
|
||||
pageForm: {
|
||||
searchType: GetQueryString('type'),
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: "createdAt",
|
||||
pageOrderBy: "descending"
|
||||
},
|
||||
formData: {
|
||||
id: "",
|
||||
type: "system"
|
||||
},
|
||||
selectData: [],
|
||||
unreadnum: {
|
||||
system: 0,
|
||||
user: 0
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
pageOrder: function (column) {//按字段排序
|
||||
this.pageForm.pageOrderName = column.prop;
|
||||
this.pageForm.pageOrderBy = column.order;
|
||||
this.pageData();
|
||||
},
|
||||
pageNumberChange: function (val) {//页码更新操作
|
||||
this.pageForm.pageNumber = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageSizeChange: function (val) {//分页大小更新操作
|
||||
this.pageForm.pageSize = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageData: function () {//加载分页数据
|
||||
var self = this;
|
||||
sublime.showLoadingbar();//显示loading
|
||||
$.post(base + "/platform/sys/msg/user/data/all", self.pageForm, function (data) {
|
||||
sublime.closeLoadingbar();//关闭loading
|
||||
if (data.code == 0) {
|
||||
self.tableData = data.data.list;
|
||||
self.pageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
formatAt: function (val) {
|
||||
if (val && val > 0)
|
||||
return moment(val).format("YYYY-MM-DD HH:mm");
|
||||
return "";
|
||||
},
|
||||
handleSelectionChange: function (val) {
|
||||
this.selectData = val;
|
||||
},
|
||||
unreadData: function () {//加载分页数据
|
||||
var self = this;
|
||||
$.post(base + "/platform/sys/msg/user/unread_num", {}, function (data) {
|
||||
if (data.code == 0) {
|
||||
self.unreadnum = data.data;
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
readMore: function () {
|
||||
var self = this;
|
||||
if (self.selectData.length == 0) {
|
||||
self.$message({
|
||||
message: "请选择消息",
|
||||
type: 'warning'
|
||||
});
|
||||
return false;
|
||||
}
|
||||
var ids = [];
|
||||
self.selectData.forEach(function (val) {
|
||||
ids.push(val.id);
|
||||
});
|
||||
self.$confirm('您确定要标记选中的 ' + ids.length + ' 条消息为已读吗? ', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: function (a, b) {
|
||||
if ("confirm" == a) {//确认后再执行
|
||||
$.post(base + "/platform/sys/msg/user/status/read", {ids: ids.toString()}, function (data) {
|
||||
if (data.code == 0) {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'success'
|
||||
});
|
||||
self.pageData();
|
||||
self.unreadData();
|
||||
} else {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
readAll: function () {
|
||||
var self = this;
|
||||
self.$confirm('您确定要标记全部消息为已读吗? ', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: function (a, b) {
|
||||
if ("confirm" == a) {//确认后再执行
|
||||
$.post(base + "/platform/sys/msg/user/status/readAll", {}, function (data) {
|
||||
if (data.code == 0) {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'success'
|
||||
});
|
||||
self.pageData();
|
||||
self.unreadData();
|
||||
} else {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
delMore: function () {
|
||||
var self = this;
|
||||
if (self.selectData.length == 0) {
|
||||
self.$message({
|
||||
message: "请选择消息",
|
||||
type: 'warning'
|
||||
});
|
||||
return false;
|
||||
}
|
||||
var ids = [];
|
||||
self.selectData.forEach(function (val) {
|
||||
ids.push(val.id);
|
||||
});
|
||||
self.$confirm('您确定要删除选中的 ' + ids.length + ' 条消息? ', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: function (a, b) {
|
||||
if ("confirm" == a) {//确认后再执行
|
||||
$.post(base + "/platform/sys/msg/user/delete", {ids: ids.toString()}, function (data) {
|
||||
if (data.code == 0) {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'success'
|
||||
});
|
||||
self.pageData();
|
||||
self.unreadData();
|
||||
} else {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
created: function () {
|
||||
this.pageData();
|
||||
this.unreadData();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,211 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.el-msg-active {
|
||||
background-color: #546478;
|
||||
color: #ffffff;
|
||||
}
|
||||
</style>
|
||||
<div id="app" v-cloak>
|
||||
<el-row class="header navbar shadow">
|
||||
<div class="btn-group tool-button mt5">
|
||||
<a href="${base}/platform/sys/msg/user/read" data-pjax class="el-button el-button--default el-button--medium"
|
||||
:class="{'el-msg-active':'all'==pageForm.searchType}">
|
||||
全部类型消息
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<a href="${base}/platform/sys/msg/user/read?type=system" data-pjax
|
||||
class="el-button el-button--default el-button--medium"
|
||||
:class="{'el-msg-active':'system'==pageForm.searchType}">
|
||||
系统消息<span v-if="unreadnum.system>0">({{unreadnum.system}})</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<a href="${base}/platform/sys/msg/user/read?type=user" data-pjax
|
||||
class="el-button el-button--default el-button--medium"
|
||||
:class="{'el-msg-active':'user'==pageForm.searchType}">
|
||||
用户消息<span v-if="unreadnum.user>0">({{unreadnum.user}})</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="pull-right offscreen-right mt5">
|
||||
<el-button size="medium" @click="delMore" type="danger" :disabled="selectData.length==0"><i class="el-icon-delete"></i>删除</el-button>
|
||||
</div>
|
||||
</el-row>
|
||||
<el-row class="el-table-container">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
@sort-change='pageOrder'
|
||||
size="small"
|
||||
header-align="center"
|
||||
style="width: 100%"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="35">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="status"
|
||||
width="45">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="0==scope.row.status"><i class="fa fa-circle text-info ml5"></i></span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="type"
|
||||
label="消息类型"
|
||||
header-align="center" align="center" width="120">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="'system'==scope.row.type">系统消息</span>
|
||||
<span v-if="'user'==scope.row.type">用户消息</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="title"
|
||||
label="标题"
|
||||
header-align="center"
|
||||
:show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<a :href="'${base}/platform/sys/msg/user/read/detail/'+scope.row.msgid" data-pjax>{{scope.row.title}}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="opat"
|
||||
label="接收时间"
|
||||
header-align="center" align="center">
|
||||
<template slot-scope="scope">
|
||||
{{formatAt(scope.row.opat)}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-row>
|
||||
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
style="float: left"
|
||||
@size-change="pageSizeChange"
|
||||
@current-change="pageNumberChange"
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:page-size="pageForm.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="pageForm.totalCount">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</div>
|
||||
<script>
|
||||
new Vue({
|
||||
el: "#app",
|
||||
data: function () {
|
||||
return {
|
||||
addDialogVisible: false,
|
||||
editDialogVisible: false,
|
||||
selectDialogVisible: false,
|
||||
viewDialogVisible: false,
|
||||
tableData: [],
|
||||
pageForm: {
|
||||
searchType: GetQueryString('type'),
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: "createdAt",
|
||||
pageOrderBy: "descending"
|
||||
},
|
||||
formData: {
|
||||
id: "",
|
||||
type: "system"
|
||||
},
|
||||
selectData: [],
|
||||
unreadnum: {
|
||||
system: 0,
|
||||
user: 0
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
pageOrder: function (column) {//按字段排序
|
||||
this.pageForm.pageOrderName = column.prop;
|
||||
this.pageForm.pageOrderBy = column.order;
|
||||
this.pageData();
|
||||
},
|
||||
pageNumberChange: function (val) {//页码更新操作
|
||||
this.pageForm.pageNumber = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageSizeChange: function (val) {//分页大小更新操作
|
||||
this.pageForm.pageSize = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageData: function () {//加载分页数据
|
||||
var self = this;
|
||||
sublime.showLoadingbar();//显示loading
|
||||
$.post(base + "/platform/sys/msg/user/data/read", self.pageForm, function (data) {
|
||||
sublime.closeLoadingbar();//关闭loading
|
||||
if (data.code == 0) {
|
||||
self.tableData = data.data.list;
|
||||
self.pageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
formatAt: function (val) {
|
||||
if (val && val > 0)
|
||||
return moment(val).format("YYYY-MM-DD HH:mm");
|
||||
return "";
|
||||
},
|
||||
handleSelectionChange: function (val) {
|
||||
this.selectData = val;
|
||||
},
|
||||
delMore: function () {
|
||||
var self = this;
|
||||
if (self.selectData.length == 0) {
|
||||
self.$message({
|
||||
message: "请选择消息",
|
||||
type: 'warning'
|
||||
});
|
||||
return false;
|
||||
}
|
||||
var ids = [];
|
||||
self.selectData.forEach(function (val) {
|
||||
ids.push(val.id);
|
||||
});
|
||||
self.$confirm('您确定要删除选中的 '+ids.length+' 条消息? ', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: function (a, b) {
|
||||
if ("confirm" == a) {//确认后再执行
|
||||
$.post(base + "/platform/sys/msg/user/delete", {ids: ids.toString()}, function (data) {
|
||||
if (data.code == 0) {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'success'
|
||||
});
|
||||
self.pageData();
|
||||
} else {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
created: function () {
|
||||
this.pageData();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,288 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.el-msg-active {
|
||||
background-color: #546478;
|
||||
color: #ffffff;
|
||||
}
|
||||
</style>
|
||||
<div id="app" v-cloak>
|
||||
<el-row class="header navbar shadow">
|
||||
<div class="btn-group tool-button mt5">
|
||||
<a href="${base}/platform/sys/msg/user/unread" data-pjax class="el-button el-button--default el-button--medium"
|
||||
:class="{'el-msg-active':'all'==pageForm.searchType}">
|
||||
全部类型消息
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<a href="${base}/platform/sys/msg/user/unread?type=system" data-pjax
|
||||
class="el-button el-button--default el-button--medium"
|
||||
:class="{'el-msg-active':'system'==pageForm.searchType}">
|
||||
系统消息<span v-if="unreadnum.system>0">({{unreadnum.system}})</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<a href="${base}/platform/sys/msg/user/unread?type=user" data-pjax
|
||||
class="el-button el-button--default el-button--medium"
|
||||
:class="{'el-msg-active':'user'==pageForm.searchType}">
|
||||
用户消息<span v-if="unreadnum.user>0">({{unreadnum.user}})</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="pull-right offscreen-right mt5">
|
||||
<el-button size="medium" @click="readMore" :disabled="selectData.length==0">标记已读</el-button>
|
||||
<el-button size="medium" @click="readAll" :disabled="tableData.length==0">全部已读</el-button>
|
||||
<el-button size="medium" @click="delMore" type="danger" :disabled="selectData.length==0"><i class="el-icon-delete"></i>删除</el-button>
|
||||
</div>
|
||||
</el-row>
|
||||
<el-row class="el-table-container">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
@sort-change='pageOrder'
|
||||
size="small"
|
||||
header-align="center"
|
||||
style="width: 100%"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="35">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="status"
|
||||
width="45">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="0==scope.row.status"><i class="fa fa-circle text-info ml5"></i></span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="type"
|
||||
label="消息类型"
|
||||
header-align="center" align="center" width="120">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="'system'==scope.row.type">系统消息</span>
|
||||
<span v-if="'user'==scope.row.type">用户消息</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="title"
|
||||
label="标题"
|
||||
header-align="center"
|
||||
:show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<a :href="'${base}/platform/sys/msg/user/unread/detail/'+scope.row.msgid" data-pjax>{{scope.row.title}}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="opat"
|
||||
label="接收时间"
|
||||
header-align="center" align="center">
|
||||
<template slot-scope="scope">
|
||||
{{formatAt(scope.row.opat)}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-row>
|
||||
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
style="float: left"
|
||||
@size-change="pageSizeChange"
|
||||
@current-change="pageNumberChange"
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:page-size="pageForm.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="pageForm.totalCount">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</div>
|
||||
<script>
|
||||
new Vue({
|
||||
el: "#app",
|
||||
data: function () {
|
||||
return {
|
||||
addDialogVisible: false,
|
||||
editDialogVisible: false,
|
||||
selectDialogVisible: false,
|
||||
viewDialogVisible: false,
|
||||
tableData: [],
|
||||
pageForm: {
|
||||
searchType: GetQueryString('type'),
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: "createdAt",
|
||||
pageOrderBy: "descending"
|
||||
},
|
||||
formData: {
|
||||
id: "",
|
||||
type: "system"
|
||||
},
|
||||
selectData: [],
|
||||
unreadnum: {
|
||||
system: 0,
|
||||
user: 0
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
pageOrder: function (column) {//按字段排序
|
||||
this.pageForm.pageOrderName = column.prop;
|
||||
this.pageForm.pageOrderBy = column.order;
|
||||
this.pageData();
|
||||
},
|
||||
pageNumberChange: function (val) {//页码更新操作
|
||||
this.pageForm.pageNumber = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageSizeChange: function (val) {//分页大小更新操作
|
||||
this.pageForm.pageSize = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageData: function () {//加载分页数据
|
||||
var self = this;
|
||||
sublime.showLoadingbar();//显示loading
|
||||
$.post(base + "/platform/sys/msg/user/data/unread", self.pageForm, function (data) {
|
||||
sublime.closeLoadingbar();//关闭loading
|
||||
if (data.code == 0) {
|
||||
self.tableData = data.data.list;
|
||||
self.pageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
formatAt: function (val) {
|
||||
if (val && val > 0)
|
||||
return moment(val).format("YYYY-MM-DD HH:mm");
|
||||
return "";
|
||||
},
|
||||
handleSelectionChange: function (val) {
|
||||
this.selectData = val;
|
||||
},
|
||||
unreadData: function () {//加载分页数据
|
||||
var self = this;
|
||||
$.post(base + "/platform/sys/msg/user/unread_num", {}, function (data) {
|
||||
if (data.code == 0) {
|
||||
self.unreadnum = data.data;
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
readMore: function () {
|
||||
var self = this;
|
||||
if (self.selectData.length == 0) {
|
||||
self.$message({
|
||||
message: "请选择消息",
|
||||
type: 'warning'
|
||||
});
|
||||
return false;
|
||||
}
|
||||
var ids = [];
|
||||
self.selectData.forEach(function (val) {
|
||||
ids.push(val.id);
|
||||
});
|
||||
self.$confirm('您确定要标记选中的 '+ids.length+' 条消息为已读吗? ', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: function (a, b) {
|
||||
if ("confirm" == a) {//确认后再执行
|
||||
$.post(base + "/platform/sys/msg/user/status/read", {ids: ids.toString()}, function (data) {
|
||||
if (data.code == 0) {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'success'
|
||||
});
|
||||
self.pageData();
|
||||
self.unreadData();
|
||||
} else {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
readAll: function () {
|
||||
var self = this;
|
||||
self.$confirm('您确定要标记全部消息为已读吗? ', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: function (a, b) {
|
||||
if ("confirm" == a) {//确认后再执行
|
||||
$.post(base + "/platform/sys/msg/user/status/readAll", {}, function (data) {
|
||||
if (data.code == 0) {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'success'
|
||||
});
|
||||
self.pageData();
|
||||
self.unreadData();
|
||||
} else {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
delMore: function () {
|
||||
var self = this;
|
||||
if (self.selectData.length == 0) {
|
||||
self.$message({
|
||||
message: "请选择消息",
|
||||
type: 'warning'
|
||||
});
|
||||
return false;
|
||||
}
|
||||
var ids = [];
|
||||
self.selectData.forEach(function (val) {
|
||||
ids.push(val.id);
|
||||
});
|
||||
self.$confirm('您确定要删除选中的 '+ids.length+' 条消息? ', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: function (a, b) {
|
||||
if ("confirm" == a) {//确认后再执行
|
||||
$.post(base + "/platform/sys/msg/user/delete", {ids: ids.toString()}, function (data) {
|
||||
if (data.code == 0) {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'success'
|
||||
});
|
||||
self.pageData();
|
||||
self.unreadData();
|
||||
} else {
|
||||
self.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
created: function () {
|
||||
this.pageData();
|
||||
this.unreadData();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
Reference in New Issue
Block a user