first commit

This commit is contained in:
2026-07-23 09:40:36 +08:00
commit 090abf48fa
989 changed files with 145728 additions and 0 deletions
+207
View File
@@ -0,0 +1,207 @@
{extend name="../../base/view/common/base" /}
{block name="style"}
<style>
.layui-table-1 .tr-2,.layui-table-1 .tr-3{display:none;}
.layui-table-2 .tr-1,.layui-table-2 .tr-3{display:none;}
.layui-table-3 .tr-1,.layui-table-3 .tr-2{display:none;}
.layui-table-4 .tr-1,.layui-table-4 .tr-2,.layui-table-4 .tr-3,.layui-table-4 .tr-4{display:none;}
</style>
{/block}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-4">
{if condition="$id eq 0"}
<h3 class="pb-3">新建消息</h3>
<table id="messageTable" class="layui-table layui-table-form layui-table-1">
<tr>
<td class="layui-td-gray-2">接收人类型</td>
<td>
<input type="radio" name="types" lay-filter="types" value="1" title="同事" checked>
<input type="radio" name="types" lay-filter="types" value="2" title="部门">
<input type="radio" name="types" lay-filter="types" value="3" title="岗位">
<input type="radio" name="types" lay-filter="types" value="4" title="全部">
</td>
</tr>
<tr class="tr-1">
<td class="layui-td-gray">收件人<font>*</font></td>
<td>
<input type="text" name="unames" value="" placeholder="请选择收件人" readonly class="layui-input picker-admin" data-type="2">
<input type="hidden" name="uids" value="">
</td>
</tr>
<tr class="tr-2">
<td class="layui-td-gray">收件部门<font>*</font></td>
<td>
<input type="text" name="dnames" value="" placeholder="请选择收件部门" readonly class="layui-input picker-oa" data-types="department" data-type="2">
<input type="hidden" name="dids" value="">
</td>
</tr>
<tr class="tr-3">
<td class="layui-td-gray">收件岗位<font>*</font></td>
<td>
<input type="text" name="pnames" value="" placeholder="请选择收件岗位" readonly class="layui-input picker-oa" data-types="position" data-type="2"">
<input type="hidden" name="pids" value="">
</td>
</tr>
<tr class="tr-4">
<td class="layui-td-gray">抄送人</td>
<td>
<input type="text" name="copy_names" value="" placeholder="请选择抄送人" readonly class="layui-input picker-admin" data-type="2">
<input type="hidden" name="copy_uids" value="">
</td>
</tr>
<tr>
<td class="layui-td-gray">消息主题<font>*</font></td>
<td><input type="text" name="title" value="" lay-verify="required" lay-reqText="请输入消息主题" placeholder="请输入消息主题" class="layui-input" lay-verify="required"></td>
</tr>
<tr>
<td class="layui-td-gray">消息内容<font>*</font></td>
<td><textarea name="content" placeholder="请输入消息内容" class="layui-textarea" style="height: 200px;" lay-verify="required" lay-reqText="请输入消息内容"></textarea></td>
</tr>
<tr>
<td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button></div></td>
<td>
<div class="layui-row" id="uploadBox">
<input type="hidden" data-type="file" name="file_ids" value="">
</div>
</td>
</tr>
</table>
{else/}
<h3 class="pb-3">编辑消息</h3>
<table id="messageTable" class="layui-table layui-table-form layui-table-{$detail.types}">
<tr>
<td class="layui-td-gray-2">接收人类型</td>
<td>
<input type="radio" name="types" lay-filter="types" value="1" title="同事" {eq name="$detail.types" value="1"}checked{/eq}>
<input type="radio" name="types" lay-filter="types" value="2" title="部门" {eq name="$detail.types" value="2"}checked{/eq}>
<input type="radio" name="types" lay-filter="types" value="3" title="岗位" {eq name="$detail.types" value="3"}checked{/eq}>
<input type="radio" name="types" lay-filter="types" value="4" title="全部" {eq name="$detail.types" value="4"}checked{/eq}>
</td>
</tr>
<tr class="tr-1">
<td class="layui-td-gray">收件人<font>*</font></td>
<td>
<input type="text" name="unames" value="{$detail.unames|default=''}" placeholder="请选择收件人" readonly class="layui-input picker-admin" data-type="2">
<input type="hidden" name="uids" value="{$detail.uids|default=''}">
</td>
</tr>
<tr class="tr-2">
<td class="layui-td-gray">收件部门<font>*</font></td>
<td>
<input type="text" name="dnames" value="{$detail.dnames|default=''}" placeholder="请选择收件部门" readonly class="layui-input picker-oa" data-types="department" data-type="2">
<input type="hidden" name="dids" value="{$detail.dids|default=''}">
</td>
</tr>
<tr class="tr-3">
<td class="layui-td-gray">收件岗位<font>*</font></td>
<td>
<input type="text" name="pnames" value="{$detail.pnames|default=''}" placeholder="请选择收件岗位" readonly class="layui-input picker-oa" data-types="position" data-type="2"">
<input type="hidden" name="pids" value="{$detail.pids|default=''}">
</td>
</tr>
<tr class="tr-4">
<td class="layui-td-gray">抄送人</td>
<td>
<input type="text" name="copy_names" value="{$detail.copy_names|default=''}" placeholder="请选择抄送人" readonly class="layui-input picker-admin" data-type="2">
<input type="hidden" name="copy_uids" value="{$detail.copy_uids|default=''}">
</td>
</tr>
<tr>
<td class="layui-td-gray">消息主题<font>*</font></td>
<td><input type="text" name="title" value="{$detail.title|default=''}" lay-verify="required" lay-reqText="请输入消息主题" placeholder="请输入消息主题" class="layui-input" lay-verify="required"></td>
</tr>
<tr>
<td class="layui-td-gray">消息内容<font>*</font></td>
<td>
<textarea name="content" placeholder="请输入消息内容" class="layui-textarea" style="height: 200px;" lay-verify="required" lay-reqText="请输入消息内容">{$detail.content|default=''}</textarea>
{if condition="($detail.msg_id > 0)"}
<table class="layui-table" style="margin-top:10px">
<tr>
<td class="layui-td-gray-2">引用消息内容</td>
<td>{$detail.from_content}</td>
</tr>
{notempty name="$detail.from_file_array"}
<tr>
<td class="layui-td-gray" style="vertical-align:top">引用消息附件</td>
<td>
<div class="layui-row">
{volist name="$detail.from_file_array" id="vo"}
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo,'view')}</div>
{/volist}
</div>
</td>
</tr>
{/notempty}
</table>
{/if}
</td>
</tr>
<tr>
<td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button></div></td>
<td colspan="5">
<div class="layui-row" id="uploadBox">
<input type="hidden" name="file_ids" data-type="file" value="{$detail.file_ids}">
{notempty name="$detail.file_ids"}
{volist name="$detail.file_array" id="vo"}
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo)}</div>
{/volist}
{/notempty}
</div>
</td>
</tr>
</table>
{/if}
<div class="pt-4">
<input type="hidden" value="{$id}" name="id">
<input type="hidden" value="{$msg_id}" name="msg_id">
<button class="layui-btn" lay-submit="" lay-filter="draftform">存为草稿</button>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即发送</button>
</div>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool','oaPicker','uploadPlus'];
function gouguInit() {
var form = layui.form,tool=layui.tool,uploadPlus=layui.uploadPlus;
let uploada = new uploadPlus();
//监听保存到草稿并发送
form.on('submit(webform)', function(data){
data.field.is_draft=1;
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
let clickbtn = $(this);
tool.post("/home/message/save", data.field, callback,clickbtn);
return false;
});
//监听保存到草稿
form.on('submit(draftform)', function(data){
data.field.is_draft=2;
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
let clickbtn = $(this);
tool.post("/home/message/save", data.field, callback),clickbtn;
return false;
});
//选择收件人类型
form.on('radio(types)', function (data) {
$('#messageTable').attr('class','layui-table layui-table-form layui-table-'+data.value);
});
}
</script>
{/block}
<!-- /脚本 -->
+162
View File
@@ -0,0 +1,162 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<div class="p-page">
{include file="message/msgmenu" /}
<div style="margin-left:172px;">
<form class="layui-form gg-form-bar border-t border-x">
<div class="layui-input-inline" style="width:200px">
<input type="text" autocomplete="off" name="range_time" readonly class="layui-input tool-time" data-range="~" placeholder="发送日期">
</div>
<div class="layui-input-inline" style="width:300px">
<input type="text" name="keywords" placeholder="关键字" class="layui-input" autocomplete="off"/>
</div>
<div class="layui-input-inline" style="width:150px;">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="reset">清空</button>
</div>
</form>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<div class="layui-btn-group">
<button class="layui-btn layui-btn-normal layui-btn-sm" lay-event="add"><i class="layui-icon">&#xe61f;</i></button>
<button class="layui-btn layui-btn-danger layui-btn-sm" lay-event="del"><i class="layui-icon">&#xe640;</i></button>
</div>
</div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
var table = layui.table, tool = layui.tool ,form = layui.form;
layui.pageTable = table.render({
elem: '#test',
toolbar: '#toolbarDemo',
defaultToolbar:false,
title:'草稿箱',
url: "/home/message/draft", //数据接口
page: true ,//开启分页
limit: 20,
cellMinWidth: 80,
height: 'full-114',
cols: [[ //表头
{type:'checkbox',fixed:'left'},
{field: 'title', title: '消息主题',minWidth:240},
{field: 'types', title: '接收人类型',width:100,align:'center',templet: function (d) {
var html = '<span class="layui-color-' + d.types + '">『同事』</span>';
if(d.types==2){
html = '<span class="layui-color-' + d.types + '">『部门』</span>';
}
if(d.types==3){
html = '<span class="layui-color-' + d.types + '">『职位』</span>';
}
if(d.types==4){
html = '<span class="layui-color-' + d.types + '">『全部』</span>';
}
return html;
}
},
{field: 'to_name', title: '接收人',width:200,templet: function (d) {
var html = d.to_name;
if(d.types==2){
html = d.to_department;
}
if(d.types==3){
html = d.to_position;
}
if(d.types==4){
html = '全部员工';
}
return html;
}
},
{field: 'copy_names', title: '抄送人',width:160},
{field: 'update_time', title: '最近保存时间', align:'center',width:160},
{field: 'right', title: '操作',fixed:'right', width:120, align:'center',templet: function (d) {
let html='<div class="layui-btn-group">';
let btn1='<span class="layui-btn layui-btn-xs" lay-event="edit">编辑</span>';
let btn2='<span class="layui-btn layui-btn-xs layui-btn-normal" lay-event="view">查看</span>';
let btn3='<button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</button></div>';
return html+btn1+btn2+btn3+'</div>'
}
}
]]
});
//监听行工具事件
table.on('tool(test)', function(obj){
let data = obj.data;
if(obj.event === 'del'){
layer.confirm('确定该信息要放入垃圾箱吗?', {icon: 3, title:'提示'}, function(index){
let callback = function (e) {
layer.msg(e.msg);
if(e.code==0){
layui.pageTable.reload();
}
}
tool.delete("/home/message/del", {ids: data.id}, callback);
layer.close(index);
});
}
if(obj.event === 'edit'){
tool.side('/home/message/add?id='+data.id);
}
if(obj.event === 'view'){
tool.side('/home/message/view?id='+data.id);
}
return false;
});
//表头工具栏事件
table.on('toolbar(test)', function(obj){
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
var data = checkStatus.data;
if (obj.event === 'add') {
tool.side("/home/message/add");
return;
}
if(data.length==0){
layer.msg('请选择要操作的消息');
return false;
}
var idArray=[],msg='是否执行该操作?';
for(var i=0;i<data.length;i++){
idArray.push(data[i].id);
}
switch(obj.event){
case 'del':
msg = '确定把选中的信息要放入垃圾箱吗?';
break;
};
layer.confirm(msg, {
icon: 3,
title: '提示'
}, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if(e.code==0){
layui.pageTable.reload();
}
}
tool.delete("/home/message/del", {ids: idArray.join(',')}, callback);
layer.close(index);
});
});
//监听搜索提交
form.on('submit(webform)', function(data){
layui.pageTable.reload({where:data.field,page:{curr:1}});
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
+226
View File
@@ -0,0 +1,226 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<div class="p-page">
{include file="message/msgmenu" /}
<div style="margin-left:172px;">
<form class="layui-form gg-form-bar border-t border-x">
<div class="layui-input-inline" style="width:200px">
<input type="text" autocomplete="off" name="range_time" readonly class="layui-input tool-time" data-range="~" placeholder="接收日期">
</div>
<div class="layui-input-inline" style="width:128px">
<select name="read">
<option value="">选择消息状态</option>
<option value="1">未读消息</option>
<option value="2">已读消息</option>
</select>
</div>
<div class="layui-input-inline" style="width:128px">
<select name="types">
<option value="">选择消息类型</option>
<option value="1">系统消息</option>
<option value="2">个人消息</option>
</select>
</div>
<div class="layui-input-inline" style="width:300px">
<input type="text" name="keywords" placeholder="关键字" class="layui-input" autocomplete="off"/>
</div>
<div class="layui-input-inline" style="width:150px;">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="reset">清空</button>
</div>
</form>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<div class="layui-btn-group">
<button class="layui-btn layui-btn-sm" lay-event="add"><i class="layui-icon">&#xe61f;</i></button>
<button class="layui-btn layui-btn-normal layui-btn-sm" lay-event="star"><i class="layui-icon">&#xe67b;</i></button>
<button class="layui-btn layui-btn-warm layui-btn-sm" lay-event="read"><i class="layui-icon">&#xe605;</i></button>
<button class="layui-btn layui-btn-danger layui-btn-sm" lay-event="del"><i class="layui-icon">&#xe640;</i></button>
</div>
</div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
var table = layui.table, tool = layui.tool ,form = layui.form;
layui.pageTable = table.render({
elem: '#test',
toolbar: '#toolbarDemo',
defaultToolbar:false,
title:'收件箱',
url: "/home/message/inbox", //数据接口
page: true ,//开启分页
limit: 20,
cellMinWidth: 80,
height: 'full-114',
cols: [[ //表头
{type:'checkbox',fixed:'left'},
{field: 'msg_type', title: '消息类型',width:90,align:'center',templet: function (d) {
var html = '<span class="yellow">系统消息</span>';
if(d.from_uid > 0){
html = '<span class="blue">个人消息</span>';
}
return html;
}
},
{field: 'from_name', title: '发件人', width:100,align:'center'},
{field: 'title', title: '消息主题',minWidth:240},
{field: 'create_time', title: '发件时间', align:'center',width:160},
{field: 'read_time', title: '是否已读',align:'center', width:80,templet:function(d){
var html='<span style="color:#5FB878">已读</span>';
if(d.read_time==0){
html='<span style="color:#FF5722">未读</span>';
}
return html;
}},
{field: 'is_star', title: '是否星标',align:'center', width:80,templet:function(d){
var html='<span class="layui-icon layui-icon-rate" style="color:#5FB878; font-size:20px; cursor:pointer" lay-event="star"> </span>';
if(d.is_star==1){
html='<span class="layui-icon layui-icon-rate-solid" style="color:#ffb800; font-size:20px; cursor:pointer" lay-event="unstar"> </span>';
}
return html;
}},
{field: 'right', title: '操作',fixed:'right', width:160, align:'center',templet: function (d) {
let html='<div class="layui-btn-group">';
let btn1='<span class="layui-btn layui-btn-xs layui-btn-normal" lay-event="view">查看</span>';
let btn2='<span class="layui-btn layui-btn-xs" lay-event="reply">回复</span>';
let btn3='<span class="layui-btn layui-btn-xs layui-btn-normal" lay-event="resend">转发</span>';
let btn4='<button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</button></div>';
if(d.from_uid == 0){
return html+btn1+btn4+'</div>'
}
else{
return html+btn1+btn2+btn3+btn4+'</div>'
}
}
}
]]
});
//监听行工具事件
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'star'){
layer.confirm('确定该信息设为星标吗?', {icon: 3, title:'提示'}, function(index){
let callback = function (e) {
layer.msg(e.msg);
if(e.code==0){
layui.pageTable.reload();
}
}
tool.delete("/home/message/check", {
ids: data.id,type:5,
}, callback);
layer.close(index);
});
}
if(obj.event === 'unstar'){
layer.confirm('确定该信息取消星标吗?', {icon: 3, title:'提示'}, function(index){
let callback = function (e) {
layer.msg(e.msg);
if(e.code==0){
layui.pageTable.reload();
}
}
tool.delete("/home/message/check", {
ids: data.id,type:6,
}, callback);
layer.close(index);
});
}
if(obj.event === 'del'){
layer.confirm('确定该信息要放入垃圾箱吗?', {icon: 3, title:'提示'}, function(index){
let callback = function (e) {
layer.msg(e.msg);
if(e.code==0){
layui.pageTable.reload();
}
}
tool.delete("/home/message/check", {
ids: data.id,type:2,
}, callback);
layer.close(index);
});
}
if(obj.event === 'view'){
tool.side('/home/message/read?id='+data.id);
return;
}
if(obj.event === 'reply'){
tool.side('/home/message/reply?msg_id='+data.id);
return;
}
if(obj.event === 'resend'){
tool.side('/home/message/resend?msg_id='+data.id);
return;
}
});
//表头工具栏事件
table.on('toolbar(test)', function(obj){
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
var data = checkStatus.data;
if (obj.event === 'add') {
tool.side("/home/message/add");
return;
}
if(data.length==0){
layer.msg('请选择要操作的消息');
return false;
}
var idArray=[],msg='是否执行该操作?',type=0;
for(var i=0;i<data.length;i++){
idArray.push(data[i].id);
}
switch(obj.event){
case 'read':
msg = '确定把选中的信息设为已读吗?';
type = 1;
break;
case 'del':
msg = '确定把选中的信息要放入垃圾箱吗?';
type = 2;
break;
case 'star':
msg = '确定把选中的信息设为星标吗?';
type = 5;
break;
};
layer.confirm(msg, {
icon: 3,
title: '提示'
}, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if(e.code==0){
layui.pageTable.reload();
}
}
tool.delete("/home/message/check", {
ids: idArray.join(','),
type:type,
}, callback);
layer.close(index);
});
});
//监听搜索提交
form.on('submit(webform)', function(data){
layui.pageTable.reload({where:data.field,page:{curr:1}});
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
+11
View File
@@ -0,0 +1,11 @@
<div class="sub-menu" style="padding:15px 12px; width:160px; height: calc(100% - 14px);">
<div class="border" style="width:100%;height:100%; background-color:#fbfbfb;">
<ul>
<li class="sub-menu-li {eq name='$action' value='inbox'} active{/eq}"><a href="/home/message/inbox"><i class="iconfont icon-yiyichuli"></i><span class="text">收件箱</span><span class="num">({$count.inbox})<span></a></li>
<li class="sub-menu-li {eq name='$action' value='star'} active{/eq}"><a href="/home/message/star"><i class="iconfont icon-pingfen"></i><span class="text">星标信息</span><span class="num">({$count.star})<span></a></li>
<li class="sub-menu-li {eq name='$action' value='sendbox'} active{/eq}"><a href="/home/message/sendbox"><i class="iconfont icon-tuiguangshezhi"></i><span class="text">发件箱</span><span class="num">({$count.sendbox})<span></a></li>
<li class="sub-menu-li {eq name='$action' value='draft'} active{/eq}"><a href="/home/message/draft"><i class="iconfont icon-lunwenguanli"></i><span class="text">草稿箱</span><span class="num">({$count.draft})<span></a></li>
<li class="sub-menu-li {eq name='$action' value='rubbish'} active{/eq}"><a href="/home/message/rubbish"><i class="iconfont icon-tiku"></i><span class="text">垃圾箱</span><span class="num">({$count.rubbish})<span></a></li>
</ul>
</div>
</div>
+105
View File
@@ -0,0 +1,105 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-4">
<h3 class="pb-3">消息详情</h3>
<table id="messageTable" class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">消息主题</td>
<td colspan="3">{$detail.title|default=''}</td>
</tr>
<tr>
<td class="layui-td-gray">消息类型</td>
{eq name="$detail.message_id" value="0"}
<td class="yellow">系统消息</td>
{else/}
<td class="blue">个人消息</td>
{/eq}
<td class="layui-td-gray">发送时间</td>
<td>{$detail.create_time|default=''}</td>
</tr>
{gt name="$detail.message_id" value="0"}
<tr>
<td class="layui-td-gray">发件人</td>
<td>{$detail.from_uname|default=''}</td>
<td class="layui-td-gray">收件人</td>
<td>
{eq name="$message.types" value="1"}
<span class="layui-color-1">『同事』</span>{$message.unames|default=''}
{/eq}
{eq name="$message.types" value="2"}
<span class="layui-color-2">『部门』</span>{$message.dnames|default=''}
{/eq}
{eq name="$message.types" value="3"}
<span class="layui-color-3">『岗位』</span>{$message.pnames|default=''}
{/eq}
</td>
</tr>
{notempty name="$message.copy_names"}
<tr>
<td class="layui-td-gray">抄送人</td>
<td colspan="3">{$message.copy_names|default=''}</td>
</tr>
{/notempty}
{/gt}
<tr>
<td class="layui-td-gray">消息内容</td>
<td colspan="3">
<pre style="font-family:inherit">{$detail.content|default=''}</pre>
{gt name="$detail.template" value="0"}
{:get_message_link($detail.template,$detail.action_id)}
{/gt}
{if condition="($detail.msg_id > 0)"}
<table class="layui-table" style="margin-top:10px">
<tr>
<td class="layui-td-gray-2">引用消息内容</td>
<td>
<pre style="font-family:inherit">{$detail.from_content}</pre>
{gt name="$detail.from_template" value="0"}
{:get_message_link($detail.from_template,$detail.from_action_id)}
{/gt}
</td>
</tr>
{notempty name="$detail.from_file_array"}
<tr>
<td class="layui-td-gray" style="vertical-align:top">引用消息附件</td>
<td>
<div class="layui-row">
{volist name="$detail.from_file_array" id="vo"}
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo,'view')}</div>
{/volist}
</div>
</td>
</tr>
{/notempty}
</table>
{/if}
</td>
</tr>
{notempty name="$detail.file_ids"}
<tr>
<td class="layui-td-gray">消息附件</td>
<td colspan="3">
<div class="layui-row">
{volist name="$detail.file_array" id="vo"}
<div class="layui-col-md4">{:file_card($vo,'view')}</div>
{/volist}
</div>
</td>
</tr>
{/notempty}
</table>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
parent.layui.pageTable.reload();
}
</script>
{/block}
<!-- /脚本 -->
+138
View File
@@ -0,0 +1,138 @@
{extend name="../../base/view/common/base" /}
{block name="style"}
<style>
.layui-table-1 .tr-2,.layui-table-1 .tr-3{display:none;}
.layui-table-2 .tr-1,.layui-table-2 .tr-3{display:none;}
.layui-table-3 .tr-1,.layui-table-3 .tr-2{display:none;}
.layui-table-4 .tr-1,.layui-table-4 .tr-2,.layui-table-4 .tr-3,.layui-table-4 .tr-4{display:none;}
</style>
{/block}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-4">
<h3 class="pb-3">回复消息</h3>
<table id="messageTable" class="layui-table layui-table-form layui-table-1">
<tr>
<td class="layui-td-gray-2">接收人类型</td>
<td>
<input type="radio" name="types" lay-filter="types" value="1" title="同事"checked>
<input type="radio" name="types" lay-filter="types" value="2" title="部门">
<input type="radio" name="types" lay-filter="types" value="3" title="岗位">
<input type="radio" name="types" lay-filter="types" value="4" title="全部">
</td>
</tr>
<tr class="tr-1">
<td class="layui-td-gray">收件人<font>*</font></td>
<td>
<input type="text" name="unames" value="{$detail.from_name|default=''}" placeholder="请选择收件人" readonly class="layui-input picker-admin" data-type="2">
<input type="hidden" name="uids" value="{$detail.from_uid|default=''}">
</td>
</tr>
<tr class="tr-2">
<td class="layui-td-gray">收件部门<font>*</font></td>
<td>
<input type="text" name="dnames" value="{$detail.dnames|default=''}" placeholder="请选择收件部门" readonly class="layui-input picker-oa" data-types="department" data-type="2">
<input type="hidden" name="dids" value="{$detail.dids|default=''}">
</td>
</tr>
<tr class="tr-3">
<td class="layui-td-gray">收件岗位<font>*</font></td>
<td>
<input type="text" name="pnames" value="{$detail.pnames|default=''}" placeholder="请选择收件岗位" readonly class="layui-input picker-oa" data-types="position" data-type="2"">
<input type="hidden" name="pids" value="{$detail.pids|default=''}">
</td>
</tr>
<tr class="tr-4">
<td class="layui-td-gray">抄送人</td>
<td>
<input type="text" name="copy_names" value="{$detail.copy_names|default=''}" placeholder="请选择抄送人" readonly class="layui-input picker-admin" data-type="2">
<input type="hidden" name="copy_uids" value="{$detail.copy_uids|default=''}">
</td>
</tr>
<tr>
<td class="layui-td-gray">消息主题<font>*</font></td>
<td><input type="text" name="title" value="回复:{$detail.title|default=''}" lay-verify="required" lay-reqText="请输入消息主题" placeholder="请输入消息主题" class="layui-input" lay-verify="required"></td>
</tr>
<tr>
<td class="layui-td-gray">消息内容<font>*</font></td>
<td>
<textarea name="content" placeholder="请输入消息内容" class="layui-textarea" style="height: 200px;" lay-verify="required" lay-reqText="请输入消息内容"></textarea>
<table class="layui-table" style="margin-top:10px">
<tr>
<td class="layui-td-gray-2">回复消息内容</td>
<td><pre style="font-family:inherit">{$detail.content|default=''}</pre></td>
</tr>
{notempty name="$detail.file_array"}
<tr>
<td class="layui-td-gray" style="vertical-align:top">回复消息附件</td>
<td>
<div class="layui-row">
{volist name="$detail.file_array" id="vo"}
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo,'view')}</div>
{/volist}
</div>
</td>
</tr>
{/notempty}
</table>
</td>
</tr>
<tr>
<td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button></div></td>
<td>
<div class="layui-row" id="uploadBox">
<input type="hidden" data-type="file" name="file_ids" value="">
</div>
</td>
</tr>
</table>
<div class="pt-4">
<input type="hidden" value="0" name="id">
<input type="hidden" value="{$detail.id}" name="msg_id">
<button class="layui-btn" lay-submit="" lay-filter="draftform">存为草稿</button>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即发送</button>
</div>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool','oaPicker','uploadPlus'];
function gouguInit() {
var form = layui.form,tool=layui.tool,uploadPlus=layui.uploadPlus;
let uploada = new uploadPlus();
//监听保存到草稿并发送
form.on('submit(webform)', function(data){
data.field.is_draft=1;
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
tool.post("/home/message/save", data.field, callback);
});
//监听保存到草稿
form.on('submit(draftform)', function(data){
data.field.is_draft=2;
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
tool.post("/home/message/save", data.field, callback);
return false;
});
//选择收件人类型
form.on('radio(types)', function (data) {
$('#messageTable').attr('class','layui-table layui-table-form layui-table-'+data.value);
});
}
</script>
{/block}
<!-- /脚本 -->
+138
View File
@@ -0,0 +1,138 @@
{extend name="../../base/view/common/base" /}
{block name="style"}
<style>
.layui-table-1 .tr-2,.layui-table-1 .tr-3{display:none;}
.layui-table-2 .tr-1,.layui-table-2 .tr-3{display:none;}
.layui-table-3 .tr-1,.layui-table-3 .tr-2{display:none;}
.layui-table-4 .tr-1,.layui-table-4 .tr-2,.layui-table-4 .tr-3,.layui-table-4 .tr-4{display:none;}
</style>
{/block}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-4">
<h3 class="pb-3">转发消息</h3>
<table id="messageTable" class="layui-table layui-table-form layui-table-1">
<tr>
<td class="layui-td-gray-2">接收人类型</td>
<td>
<input type="radio" name="types" lay-filter="types" value="1" title="同事"checked>
<input type="radio" name="types" lay-filter="types" value="2" title="部门">
<input type="radio" name="types" lay-filter="types" value="3" title="岗位">
<input type="radio" name="types" lay-filter="types" value="4" title="全部">
</td>
</tr>
<tr class="tr-1">
<td class="layui-td-gray">收件人<font>*</font></td>
<td>
<input type="text" name="unames" value="{$detail.from_name|default=''}" placeholder="请选择收件人" readonly class="layui-input picker-admin" data-type="2">
<input type="hidden" name="uids" value="{$detail.from_uid|default=''}">
</td>
</tr>
<tr class="tr-2">
<td class="layui-td-gray">收件部门<font>*</font></td>
<td>
<input type="text" name="dnames" value="{$detail.dnames|default=''}" placeholder="请选择收件部门" readonly class="layui-input picker-oa" data-types="department" data-type="2">
<input type="hidden" name="dids" value="{$detail.dids|default=''}">
</td>
</tr>
<tr class="tr-3">
<td class="layui-td-gray">收件岗位<font>*</font></td>
<td>
<input type="text" name="pnames" value="{$detail.pnames|default=''}" placeholder="请选择收件岗位" readonly class="layui-input picker-oa" data-types="position" data-type="2"">
<input type="hidden" name="pids" value="{$detail.pids|default=''}">
</td>
</tr>
<tr class="tr-4">
<td class="layui-td-gray">抄送人</td>
<td>
<input type="text" name="copy_names" value="{$detail.copy_names|default=''}" placeholder="请选择抄送人" readonly class="layui-input picker-admin" data-type="2">
<input type="hidden" name="copy_uids" value="{$detail.copy_uids|default=''}">
</td>
</tr>
<tr>
<td class="layui-td-gray">消息主题<font>*</font></td>
<td><input type="text" name="title" value="转发:{$detail.title|default=''}" lay-verify="required" lay-reqText="请输入消息主题" placeholder="请输入消息主题" class="layui-input" lay-verify="required"></td>
</tr>
<tr>
<td class="layui-td-gray">消息内容<font>*</font></td>
<td>
<textarea name="content" placeholder="请输入消息内容" class="layui-textarea" style="height: 200px;" lay-verify="required" lay-reqText="请输入消息内容"></textarea>
<table class="layui-table" style="margin-top:10px">
<tr>
<td class="layui-td-gray-2">转发消息内容</td>
<td>{$detail.content|default=''}</td>
</tr>
{notempty name="$detail.file_array"}
<tr>
<td class="layui-td-gray" style="vertical-align:top">转发消息附件</td>
<td>
<div class="layui-row">
{volist name="$detail.file_array" id="vo"}
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo,'view')}</div>
{/volist}
</div>
</td>
</tr>
{/notempty}
</table>
</td>
</tr>
<tr>
<td class="layui-td-gray"><div class="layui-input-inline">附件</div> <div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button></div></td>
<td>
<div class="layui-row" id="uploadBox">
<input type="hidden" data-type="file" name="file_ids" value="">
</div>
</td>
</tr>
</table>
<div class="pt-4">
<input type="hidden" value="0" name="id">
<input type="hidden" value="{$detail.id}" name="msg_id">
<button class="layui-btn" lay-submit="" lay-filter="draftform">存为草稿</button>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即发送</button>
</div>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool','oaPicker','uploadPlus'];
function gouguInit() {
var form = layui.form,tool=layui.tool,uploadPlus=layui.uploadPlus;
let uploada = new uploadPlus();
//监听保存到草稿并发送
form.on('submit(webform)', function(data){
data.field.is_draft=1;
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
tool.post("/home/message/save", data.field, callback);
});
//监听保存到草稿
form.on('submit(draftform)', function(data){
data.field.is_draft=2;
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
tool.post("/home/message/save", data.field, callback);
return false;
});
//选择收件人类型
form.on('radio(types)', function (data) {
$('#messageTable').attr('class','layui-table layui-table-form layui-table-'+data.value);
});
}
</script>
{/block}
<!-- /脚本 -->
+109
View File
@@ -0,0 +1,109 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<div class="p-page">
{include file="message/msgmenu" /}
<div style="margin-left:172px;">
<form class="layui-form gg-form-bar border-t border-x">
<div class="layui-input-inline" style="width:300px">
<input type="text" name="keywords" placeholder="关键字" class="layui-input" autocomplete="off"/>
</div>
<div class="layui-input-inline" style="width:150px;">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="reset">清空</button>
</div>
</form>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
<script type="text/html" id="toolbarDemo">
<h3>垃圾箱信息</h3>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
var table = layui.table, tool = layui.tool ,form = layui.form;
layui.pageTable = table.render({
elem: '#test',
toolbar: '#toolbarDemo',
defaultToolbar:false,
title:'垃圾箱',
url: "/home/message/rubbish", //数据接口
page: true ,//开启分页
limit: 20,
cellMinWidth: 80,
height: 'full-114',
cols: [[ //表头
{type:'checkbox',fixed:'left'},
{field: 'sourse', title: '来源',width:90,align:'center',templet: function (d) {
return '<span class="layui-color-' + d.types + '">『'+d.sourse+'』</span>';
}
},
{field: 'from_name', title: '发送人',width:100,align:'center'},
{field: 'title', title: '消息主题',minWidth:240},
{field: 'send_time', title: '发件时间', align:'center',width:160},
{field: 'right', title: '操作',fixed:'right', width:120, align:'center',templet: function (d) {
let html='<div class="layui-btn-group">';
let btn1='<span class="layui-btn layui-btn-xs" lay-event="recovery">还原</span>';
let btn2='<span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">查看</span>';
let btn3='<button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="clear">清除</button></div>';
return html+btn1+btn2+btn3+'</div>'
}
}
]]
});
//监听行工具事件
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'clear'){
layer.confirm('确定清除该信息吗?', {icon: 3, title:'提示'}, function(index){
let callback = function (e) {
layer.msg(e.msg);
if(e.code==0){
layui.pageTable.reload();
}
}
tool.delete("/home/message/clear", {ids: data.id,'table':data.table_name}, callback);
layer.close(index);
})
}
if(obj.event === 'recovery'){
layer.confirm('确定还原该信息吗?', {icon: 3, title:'提示'}, function(index){
let callback = function (e) {
layer.msg(e.msg);
if(e.code==0){
layui.pageTable.reload();
}
}
tool.delete("/home/message/recovery", {ids: data.id,'table':data.table_name}, callback);
layer.close(index);
})
}
if(obj.event === 'view'){
if(data.table_name=='msg'){
tool.side('/home/message/read?id='+data.id);
}
else{
tool.side('/home/message/view?id='+data.id);
}
return;
}
});
//监听搜索提交
form.on('submit(webform)', function(data){
layui.pageTable.reload({where:data.field,page:{curr:1}});
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
+159
View File
@@ -0,0 +1,159 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<div class="p-page">
{include file="message/msgmenu" /}
<div style="margin-left:172px;">
<form class="layui-form gg-form-bar border-t border-x">
<div class="layui-input-inline" style="width:200px">
<input type="text" autocomplete="off" name="range_time" readonly class="layui-input tool-time" data-range="~" placeholder="发送日期">
</div>
<div class="layui-input-inline" style="width:300px">
<input type="text" name="keywords" placeholder="关键字" class="layui-input" autocomplete="off"/>
</div>
<div class="layui-input-inline" style="width:150px;">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="reset">清空</button>
</div>
</form>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<div class="layui-btn-group">
<button class="layui-btn layui-btn-normal layui-btn-sm" lay-event="add"><i class="layui-icon">&#xe61f;</i></button>
<button class="layui-btn layui-btn-danger layui-btn-sm" lay-event="del"><i class="layui-icon">&#xe640;</i></button>
</div>
</div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
var table = layui.table, tool = layui.tool ,form = layui.form;
layui.pageTable = table.render({
elem: '#test',
toolbar: '#toolbarDemo',
defaultToolbar:false,
title:'发件箱',
url: "/home/message/sendbox", //数据接口
page: true ,//开启分页
limit: 20,
cellMinWidth: 80,
height: 'full-114',
cols: [[ //表头
{type:'checkbox',fixed:'left'},
{field: 'title', title: '消息主题',minWidth:240},
{field: 'types', title: '接收人类型',width:100,align:'center',templet: function (d) {
var html = '<span class="layui-color-' + d.types + '">『同事』</span>';
if(d.types==2){
html = '<span class="layui-color-' + d.types + '">『部门』</span>';
}
if(d.types==3){
html = '<span class="layui-color-' + d.types + '">『职位』</span>';
}
if(d.types==4){
html = '<span class="layui-color-' + d.types + '">『全部』</span>';
}
return html;
}
},
{field: 'to_name', title: '接收人',width:200,templet: function (d) {
var html = d.to_name;
if(d.types==2){
html = d.to_department;
}
if(d.types==3){
html = d.to_position;
}
if(d.types==4){
html = '全部员工';
}
return html;
}
},
{field: 'copy_names', title: '抄送人', width:160},
{field: 'send_time_str', title: '发件时间', align:'center',width:160},
{field: 'right', title: '操作',fixed:'right', width:90, align:'center',templet: function (d) {
let html='<div class="layui-btn-group">';
let btn1='<span class="layui-btn layui-btn-xs" lay-event="view">查看</span>';
let btn2='<button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</button></div>';
return html+btn1+btn2+'</div>'
}
}
]]
});
//监听行工具事件
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'del'){
layer.confirm('确定该信息要放入垃圾箱吗?', {icon: 3, title:'提示'}, function(index){
let callback = function (e) {
layer.msg(e.msg);
if(e.code==0){
layui.pageTable.reload();
}
}
tool.delete("/home/message/del", {ids: data.id}, callback);
layer.close(index);
})
}
if(obj.event === 'view'){
tool.side('/home/message/view?id='+data.id);
return;
}
});
//表头工具栏事件
table.on('toolbar(test)', function(obj){
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
var data = checkStatus.data;
if (obj.event === 'add') {
tool.side("/home/message/add");
return;
}
if(data.length==0){
layer.msg('请选择要操作的消息');
return false;
}
var idArray=[],msg='是否执行该操作?';
for(var i=0;i<data.length;i++){
idArray.push(data[i].id);
}
switch(obj.event){
case 'del':
msg = '确定把选中的信息要放入垃圾箱吗?';
break;
};
layer.confirm(msg, {
icon: 3,
title: '提示'
}, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if(e.code==0){
layui.pageTable.reload();
}
}
tool.delete("/home/message/del", {ids: idArray.join(',')}, callback);
layer.close(index);
});
});
//监听搜索提交
form.on('submit(webform)', function(data){
layui.pageTable.reload({where:data.field,page:{curr:1}});
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
+183
View File
@@ -0,0 +1,183 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<div class="p-page">
{include file="message/msgmenu" /}
<div style="margin-left:172px;">
<form class="layui-form gg-form-bar border-t border-x">
<div class="layui-input-inline" style="width:200px">
<input type="text" autocomplete="off" name="range_time" readonly class="layui-input tool-time" data-range="~" placeholder="接收日期">
</div>
<div class="layui-input-inline" style="width:128px">
<select name="types">
<option value="">选择消息类型</option>
<option value="1">系统消息</option>
<option value="2">个人消息</option>
</select>
</div>
<div class="layui-input-inline" style="width:300px">
<input type="text" name="keywords" placeholder="关键字" class="layui-input" autocomplete="off"/>
</div>
<div class="layui-input-inline" style="width:150px;">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="reset">清空</button>
</div>
</form>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
</div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<div class="layui-btn-group">
<button class="layui-btn layui-btn-sm" lay-event="add"><i class="layui-icon">&#xe61f;</i></button>
<button class="layui-btn layui-btn-normal layui-btn-sm" lay-event="unstar"><i class="layui-icon">&#xe67b;</i></button>
<button class="layui-btn layui-btn-warm layui-btn-sm" lay-event="read"><i class="layui-icon">&#xe605;</i></button>
<button class="layui-btn layui-btn-danger layui-btn-sm" lay-event="del"><i class="layui-icon">&#xe640;</i></button>
</div>
</div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
var table = layui.table, tool = layui.tool ,form = layui.form;
layui.pageTable = table.render({
elem: '#test',
toolbar: '#toolbarDemo',
defaultToolbar:false,
title:'标星信息',
url: "/home/message/star", //数据接口
page: true ,//开启分页
limit: 20,
cellMinWidth: 80,
height: 'full-114',
cols: [[ //表头
{type:'checkbox',fixed:'left'},
{field: 'msg_type', title: '消息类型',width:90,align:'center',templet: function (d) {
var html = '<span class="yellow">系统消息</span>';
if(d.from_uid > 0){
html = '<span class="blue">个人消息</span>';
}
return html;
}
},
{field: 'from_name', title: '发件人', width:100,align:'center'},
{field: 'title', title: '消息主题',minWidth:240},
{field: 'create_time', title: '发件时间', align:'center',width:160},
{field: 'read_time', title: '是否已读',align:'center', width:90,templet:function(d){
var html='<span style="color:#5FB878">已读</span>';
if(d.read_time==0){
html='<span style="color:#FF5722">未读</span>';
}
return html;
}},
{field: 'right', title: '操作',fixed:'right', width:160, align:'center',templet: function (d) {
let html='<div class="layui-btn-group">';
let btn1='<span class="layui-btn layui-btn-xs layui-btn-normal" lay-event="view">查看</span>';
let btn2='<span class="layui-btn layui-btn-xs" lay-event="reply">回复</span>';
let btn3='<span class="layui-btn layui-btn-xs layui-btn-normal" lay-event="resend">转发</span>';
let btn4='<button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</button></div>';
if(d.from_uid == 0){
return html+btn1+btn4+'</div>'
}
else{
return html+btn1+btn2+btn3+btn4+'</div>'
}
}
}
]]
});
//监听行工具事件
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'del'){
layer.confirm('确定该信息要放入垃圾箱吗?', {icon: 3, title:'提示'}, function(index){
let callback = function (e) {
layer.msg(e.msg);
if(e.code==0){
layui.pageTable.reload();
}
}
tool.delete("/home/message/check", {
ids: data.id,type:2,
}, callback);
layer.close(index);
});
}
if(obj.event === 'view'){
tool.side('/home/message/read?id='+data.id);
return;
}
if(obj.event === 'reply'){
tool.side('/home/message/reply?msg_id='+data.id);
return;
}
if(obj.event === 'resend'){
tool.side('/home/message/resend?msg_id='+data.id);
return;
}
});
//表头工具栏事件
table.on('toolbar(test)', function(obj){
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
var data = checkStatus.data;
if (obj.event === 'add') {
tool.side("/home/message/add");
return;
}
if(data.length==0){
layer.msg('请选择要操作的消息');
return false;
}
var idArray=[],msg='是否执行该操作?',type=0;
for(var i=0;i<data.length;i++){
idArray.push(data[i].id);
}
switch(obj.event){
case 'read':
msg = '确定把选中的信息设为已读吗?';
type = 1;
break;
case 'del':
msg = '确定把选中的信息要放入垃圾箱吗?';
type = 2;
break;
case 'unstar':
msg = '确定把选中的信息取消星标吗?';
type = 6;
break;
};
layer.confirm(msg, {
icon: 3,
title: '提示'
}, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if(e.code==0){
layui.pageTable.reload();
}
}
tool.delete("/home/message/check", {
ids: idArray.join(','),
type:type,
}, callback);
layer.close(index);
});
});
//监听搜索提交
form.on('submit(webform)', function(data){
layui.pageTable.reload({where:data.field,page:{curr:1}});
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
+121
View File
@@ -0,0 +1,121 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-4">
<h3 class="pb-3">消息详情</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">消息主题</td>
<td colspan="3">{$detail.title|default=''}</td>
</tr>
<tr>
<td class="layui-td-gray">收件人</td>
<td>
{eq name="$detail.types" value="1"}
<span class="layui-color-1">『同事』</span>{$detail.unames|default=''}
{/eq}
{eq name="$detail.types" value="2"}
<span class="layui-color-2">『部门』</span>{$detail.dnames|default=''}
{/eq}
{eq name="$detail.types" value="3"}
<span class="layui-color-3">『岗位』</span>{$detail.pnames|default=''}
{/eq}
</td>
{eq name="$detail.send_time" value="0"}
<td class="layui-td-gray">发送状态</td>
<td class="red">草稿,未发送</td>
{else/}
<td class="layui-td-gray">发送时间</td>
<td>{$detail.send_time|date='Y-m-d H:i:s'}</td>
{/eq}
</tr>
{notempty name="$detail.copy_names"}
<tr>
<td class="layui-td-gray">抄送人</td>
<td colspan="3">{$detail.copy_names|default=''}</td>
</tr>
{/notempty}
<tr>
<td class="layui-td-gray">消息内容</td>
<td colspan="3">
<pre style="font-family:inherit">{$detail.content|default=''}</pre>
{gt name="$detail.template" value="0"}
{:get_message_link($detail.template,$detail.action_id)}
{/gt}
{if condition="($detail.msg_id > 0)"}
<table class="layui-table" style="margin-top:10px">
<tr>
<td class="layui-td-gray-2">引用消息内容</td>
<td>
<pre style="font-family:inherit">{$detail.from_content}</pre>
{gt name="$detail.from_template" value="0"}
{:get_message_link($detail.from_template,$detail.from_action_id)}
{/gt}
</td>
</tr>
{notempty name="$detail.from_file_array"}
<tr>
<td class="layui-td-gray" style="vertical-align:top">引用消息附件</td>
<td>
<div class="layui-row">
{volist name="$detail.from_file_array" id="vo"}
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo,'view')}</div>
{/volist}
</div>
</td>
</tr>
{/notempty}
</table>
{/if}
</td>
</tr>
{notempty name="$detail.file_ids"}
<tr>
<td class="layui-td-gray">消息附件</td>
<td colspan="3">
<div class="layui-row">
{volist name="$detail.file_array" id="vo"}
<div class="layui-col-md4">{:file_card($vo,'view')}</div>
{/volist}
</div>
</td>
</tr>
{/notempty}
{notempty name="$detail.read_user_names"}
<tr>
<td class="layui-td-gray">已读回执</td>
<td colspan="3">{$detail.read_user_names}</td>
</tr>
{/notempty}
</table>
{eq name="$detail.send_time" value="0"}
<div class="pt-4">
<input type="hidden" value="{$detail.id}" name="id">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即发送</button>
</div>
{/eq}
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
var tool = layui.tool,form = layui.form;
//监听发送
form.on('submit(webform)', function(data){
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
tool.post("/home/message/send_message", data.field, callback);
return false;
});
}
</script>
{/block}
<!-- /脚本 -->