You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1135 lines
49 KiB

<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8">
<!--#include file="/widget/head.html"-->
<link href="../css/sendEmail.css" rel="stylesheet" type="text/css">
<script src="/js/guid.js"></script>
<script type="text/javascript" src="../js/notice/xm-select.js"></script>
<script type="text/javascript" src="../js/load_realmlist.js"></script>
<style>
.layui-table-cell {
height: auto;
}
.col-sm-2 select {
height: 30px;
font-size: 20px;
}
#herodiv select {
font-size: 25px;
}
.select2-results__option, .select2-selection__rendered {
font-size: 20px !important;
}
.select2-results__options {
max-height: 350px !important;
}
.label-content{
max-height: 150px;
overflow-y: auto;
}
.label-content::-webkit-scrollbar-thumb {
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
-ms-border-radius: 10px;
border-radius: 10px;
background-color: #C2C2C2;
}
/*定义滚动条轨道 内阴影+圆角*/
.label-content::-webkit-scrollbar-track {
border-radius: 10px;
}
/*定义滚动条高宽及背景*/
.label-content::-webkit-scrollbar {
width: 10px;
}
</style>
<script src="/js/template-web.js"></script>
</head>
<body class="layui-layout-body" layadmin-themealias="default">
<div id="wrapper">
<!-- Navigation -->
<!--#include file="/widget/nav.html"-->
<div id="page-wrapper" class="layui-body layadmin-tabsbody-item layui-show layui-fluid layui-row layui-col-space12">
<div class="layui-card" id="card-page-wrapper">
<div class="row">
<div class="col-lg-11">
<h2 class="page-header">发送邮件</h2>
</div>
</div>
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"><a href="#write" role="tab" data-toggle="tab" id="titleWrite">写邮件</a></li>
<li role="presentation"><a href="#review" role="tab" data-toggle="tab" id="titleReview">待审核</a></li>
<li role="presentation"><a href="#send" role="tab" data-toggle="tab" id="titleSend">已发送</a></li>
</ul>
<div class="" style="margin-right: 220px">
<div role="tabpanel" class="tab-pane active" id="write">
<form class="form-horizontal" role="form">
<div class="form-group">
<label class="col-sm-2 control-label">收件人</label>
<div class="col-sm-10">
<input type="text" class="layui-input" id="name" placeholder="请输入发送者">
<button type="button" class="layui-btn" value="UID文本文件" onclick="uidtext.click();" ><i class="layui-icon layui-icon-upload">UID文本文件</i></button>
<input type="file" id="uidtext" onchange="readtext();" style="display:none;">
<label style="color:red;">文本文件支持 换行 和 | 两种格式 </label>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">服务器</label>
<div class="col-sm-10" id="realmlistdiv">
<div id="realmlistSelect" style="display: inline-block;width: 300px;margin-left: 20px;"></div>
<div id="realmlistRule" style="display: inline-block;margin-left: 20px;"></div>
<button type="button" class="layui-btn pull-right col-sm-2" onclick="AddLanguage()">添加语言</button>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">是否发送给全部玩家</label>
<div class="col-sm-10">
<label><input type="radio" name="isSendToAll" value="1"></label>
<label><input type="radio" checked="checked" name="isSendToAll" value="0"></label>
(是:发送给全服玩家;否:只发给对应语言玩家)
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">是否需要审核</label>
<div class="col-sm-10">
<label><input type="radio"checked="checked" name="isReview" value="1"></label>
<label><input type="radio" name="isReview" value="0"></label>
</div>
</div>
<div style="border: 1px solid #ccc;border-radius: 4px;" id="LanguageDiv">
</div>
<div style="border: 1px solid #ccc;border-radius: 4px;padding-bottom: 50px;">
<div class="form-group" style="margin-top:10px;" data-id="itemdiv">
<label class="col-sm-2 control-label">道具ID1</label>
<div class="col-sm-3">
<!-- <input type="text" class="form-control zero" id="item1" data-id="itemid" value="0" placeholder=""> -->
<select class="form-control zero" data-id="itemid" id="item1">
<option value="-1">-----请选择-----</option>
</select>
</div>
<label class="col-sm-2 control-label">道具1数量</label>
<div class="col-sm-2">
<input type="text" class="form-control zero" id="itemCount1" data-id="itemnum" value="0" placeholder="">
</div>
</div>
<button type="button" class="layui-btn col-sm-2" id="adddj" style=" float:left; ">
增加道具
</button>
</div>
<div style="border: 1px solid #ccc;border-radius: 4px;padding-bottom: 50px;">
<div class="form-group" style="margin-top:10px;" data-id="equipdiv">
<label class="col-sm-2 control-label">武器ID1</label>
<div class="col-sm-3">
<!-- <input type="text" class="form-control zero" id="item1" data-id="itemid" value="0" placeholder=""> -->
<select class="form-control zero" data-id="equipid" id="equip1">
<option value="-1">-----请选择-----</option>
</select>
</div>
<label class="col-sm-2 control-label">武器1数量</label>
<div class="col-sm-2">
<input type="text" class="form-control zero" id="equipCount1" data-id="equipnum" value="0" placeholder="">
</div>
</div>
<button type="button" class="layui-btn col-sm-2" id="addEquip" style=" float:left; ">
增加武器
</button>
</div>
<div style="border: 1px solid #ccc;border-radius: 4px;padding-bottom: 50px;">
<div class="form-group" style="margin-top:10px;" data-id="gemdiv">
<label class="col-sm-2 control-label">宝石ID1</label>
<div class="col-sm-3">
<!-- <input type="text" class="form-control zero" id="item1" data-id="itemid" value="0" placeholder=""> -->
<select class="form-control zero" data-id="gemid" id="gem1">
<option value="-1">-----请选择-----</option>
</select>
</div>
<label class="col-sm-2 control-label">宝石1数量</label>
<div class="col-sm-2">
<input type="text" class="form-control zero" id="gemCount1" data-id="gemnum" value="0" placeholder="">
</div>
</div>
<button type="button" class="layui-btn col-sm-2" id="addGem" style=" float:left; ">
增加宝石
</button>
</div>
<div style="border: 1px solid #ccc;border-radius: 4px;padding-bottom: 50px;">
<div class="form-group" style="margin-top:10px;" data-id="skindiv">
<label class="col-sm-2 control-label">皮肤ID1</label>
<div class="col-sm-3">
<!-- <input type="text" class="form-control zero" id="item1" data-id="itemid" value="0" placeholder=""> -->
<select class="form-control zero" data-id="skinid" id="skin1">
<option value="-1">-----请选择-----</option>
</select>
</div>
<label class="col-sm-2 control-label">皮肤1数量</label>
<div class="col-sm-2">
<input type="text" class="form-control zero" id="skinCount1" data-id="skinnum" value="0" placeholder="">
</div>
</div>
<button type="button" class="layui-btn col-sm-2" id="addSkin" style=" float:left; ">
增加皮肤
</button>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">有效时长 <label style="color:red;"> (最小一天,最大15天)</label></label>
<div class="col-sm-2">
<input type="text" class="form-control zero" id="timeLimit_start" placeholder="开始时间">
<!-- <input type="text" class="form-control zero" id="timeLimit" placeholder=""> -->
</div>
<label class="col-sm-2 control-label"></label>
<div class="col-sm-2">
<input type="text" class="form-control zero" id="timeLimit_end" placeholder="结束时间">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">apk版本参数</label>
<div class="col-sm-2">
<input type="text" class="form-control zero" id="versionParam" placeholder="">
</div>
<label class="col-sm-2 control-label">玩家创建时间</label>
<div class="col-sm-2">
<input type="text" class="form-control zero" id="playerCreateTime" placeholder="">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="button" class="layui-btn pull-right col-sm-2" data-toggle="modal" data-target="#myModal" id="btn">发送</button>
<button type="reset" class="layui-btn layui-btn-danger pull-right col-sm-2" style="margin-right: 5px;">清空</button>
<!-- <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">
<span aria-hidden="true">&times;</span><span class="sr-only">Close</span>
</button>
<h4 class="modal-title" id="myModalLabel">是否确定发送?</h4>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
<button type="button" class="btn btn-primary" data-dismiss="modal" id="sure">确定</button>
</div>
</div>
</div>
</div> -->
<div id="waite-send">
<div class="ajax-loader"></div>
<!--<div id="text"><span>发送中,请稍后。。。</span></div>-->
</div>
</div>
</div>
</form>
</div>
<div role="tabpanel" class="tab-pane" id="send">
<div class="layui-form">
<div class="layui-form-item layui-inline" style="width:400px;">
<label class="layui-form-label" style="width: 120px;">开始时间</label>
<div class="layui-inline" style="width:220px;">
<input type="text" name="title" id="stadate" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline" style="width:400px;">
<label class="layui-form-label" style="width: 120px;">结束时间</label>
<div class="layui-inline" style="width:220px;">
<input type="text" name="title" id="enddate" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline" style="width:100px;">
<div class="layui-inline" style="width:100px;">
<button class="layui-btn" type="button" id="query">查询</button>
</div>
</div>
</div>
<div id="sendDatatab" lay-filter="sendDatatab" style="margin-left: 10px;"></div>
</div>
</div>
</div>
</div>
</div>
<script type="text/template" id="contenthtml">
<div style="border-bottom:2px solid #ccc" data-id="contentdiv" >
<div class="form-group">
<label class="col-sm-2 control-label">语言</label>
<div class="col-sm-10">
<select data-id="language" style="width:150px;height:30px;font-size:18px;">
{{each list v k}}
<option value="{{v.lang_abbr}}">{{v.skip}}</option>
{{/each}}
</select>
<button type="button" class="layui-btn layui-btn-danger pull-right col-sm-2" style="background-color:red;" onclick="DelLanguage(this)">删除语言</button>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">标题</label>
<div class="col-sm-10">
<input type="text" class="form-control" data-id="title" placeholder="" maxlength="100" oninput="changeTitle()">
<div style="position: absolute;right: 20px;top: 7px;"><span id="title">0</span><span>/</span><span>100</span></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">内容</label>
<div class="col-sm-10">
<textarea class="form-control" data-id="content" style="height:120px;" maxlength="1000" oninput="changeContent()"></textarea>
<div style="position: absolute;right: 20px;bottom: 7px;"><span id="content">0</span><span>/</span><span>1000</span></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">发送者</label>
<div class="col-sm-10">
<input type="text" class="form-control" data-id="senderName" placeholder="" maxlength="100" oninput="changeSenderName()">
<div style="position: absolute;right: 20px;top: 7px;"><span id="senderName">0</span><span>/</span><span>100</span></div>
</div>
</div>
</div>
</script>
<script type="text/template" id="itemhtml" >
<div class="form-group" style="margin-top:10px;" data-id="itemdiv" id="itemdiv{{djnum}}">
<label class="col-sm-2 control-label">道具ID{{djnum}}</label>
<div class="col-sm-3">
<!-- <input type="text" class="form-control zero" data-id="itemid" id="item{{djnum}}" value="0" placeholder=""> -->
<select class="form-control zero" data-id="itemid" id="item{{djnum}}">
<option value="-1">-----请选择-----</option>
</select>
</div>
<label class="col-sm-2 control-label">道具{{djnum}}数量</label>
<div class="col-sm-2">
<input type="text" class="form-control zero" id="itemCount{{djnum}}" data-id="itemnum" value="0" placeholder="">
</div>
<button type="button" class="layui-btn layui-btn-danger col-sm-2" data-toggle="modal" onclick="del({{djnum}})" style="float:left;">
删除道具
</button>
</div>
</script>
<script type="text/template" id="equiphtml" >
<div class="form-group" style="margin-top:10px;" data-id="equipdiv" id="equipdiv{{djnum}}">
<label class="col-sm-2 control-label">武器ID{{djnum}}</label>
<div class="col-sm-3">
<!-- <input type="text" class="form-control zero" data-id="itemid" id="item{{djnum}}" value="0" placeholder=""> -->
<select class="form-control zero" data-id="equipid" id="equip{{djnum}}">
<option value="-1">-----请选择-----</option>
</select>
</div>
<label class="col-sm-2 control-label">武器{{djnum}}数量</label>
<div class="col-sm-2">
<input type="text" class="form-control zero" id="equipCount{{djnum}}" data-id="equipnum" value="0" placeholder="">
</div>
<button type="button" class="layui-btn layui-btn-danger col-sm-2" data-toggle="modal" onclick="delEquip({{djnum}})" style="float:left;">
删除武器
</button>
</div>
</script>
<script type="text/template" id="gemhtml" >
<div class="form-group" style="margin-top:10px;" data-id="gemdiv" id="gemdiv{{djnum}}">
<label class="col-sm-2 control-label">宝石ID{{djnum}}</label>
<div class="col-sm-3">
<!-- <input type="text" class="form-control zero" data-id="itemid" id="item{{djnum}}" value="0" placeholder=""> -->
<select class="form-control zero" data-id="gemid" id="gem{{djnum}}">
<option value="-1">-----请选择-----</option>
</select>
</div>
<label class="col-sm-2 control-label">宝石{{djnum}}数量</label>
<div class="col-sm-2">
<input type="text" class="form-control zero" id="gemCount{{djnum}}" data-id="gemnum" value="0" placeholder="">
</div>
<button type="button" class="layui-btn layui-btn-danger col-sm-2" data-toggle="modal" onclick="delGem({{djnum}})" style="float:left;">
删除宝石
</button>
</div>
</script>
<script type="text/template" id="skinhtml" >
<div class="form-group" style="margin-top:10px;" data-id="skindiv" id="skindiv{{djnum}}">
<label class="col-sm-2 control-label">皮肤ID{{djnum}}</label>
<div class="col-sm-3">
<!-- <input type="text" class="form-control zero" data-id="itemid" id="item{{djnum}}" value="0" placeholder=""> -->
<select class="form-control zero" data-id="skinid" id="skin{{djnum}}">
<option value="-1">-----请选择-----</option>
</select>
</div>
<label class="col-sm-2 control-label">皮肤{{djnum}}数量</label>
<div class="col-sm-2">
<input type="text" class="form-control zero" id="skinCount{{djnum}}" data-id="skinnum" value="0" placeholder="" max="1">
</div>
<button type="button" class="layui-btn layui-btn-danger col-sm-2" data-toggle="modal" onclick="delSkin({{djnum}})" style="float:left;">
删除皮肤
</button>
</div>
</script>
<script id="bt" type="text/template">
{{# if(d.status >=0 && d.status != 4 && (new Date(d.endTimeStr).getTime() > new Date().getTime())) { }}
<button class="layui-btn layui-btn-xs" lay-event="recall">撤回</button>
{{# } }}
{{# if(d.status >=0 && d.status != 4 && (new Date(d.dateStr).getTime() > new Date().getTime())) { }}
<span class="layui-badge layui-bg-blue">待发送</span>
{{# } }}
{{# if(d.status >=0 && new Date(d.endTimeStr).getTime() <= new Date().getTime()) { }}
<span class="layui-badge">已过期</span>
{{# } }}
{{# if(d.status == 4) { }}
<span class="layui-badge layui-bg-cyan">已撤回</span>
{{# } }}
{{# if(d.status == -1) { }}
<button class="layui-btn layui-btn-xs" lay-event="review">待审核</button>
{{# } }}
{{# if(d.status == -2) { }}
<span class="layui-badge layui-bg-cyan">已拒绝</span>
<button class="layui-btn layui-btn-xs" lay-event="delete">删除</button>
{{# } }}
</script>
<script id="btDetail" type="text/template">
<button class="layui-btn layui-btn-xs" lay-event="openDetail">详情</button>
</script>
<!--<script src="../js/email-chartTable.js"></script>-->
<!--#include file="/widget/email-tail.html"-->
<script type="text/javascript">
$(function(){
updateUUID()
$("#name").focus(function (){
layer.tips("收件人可为“all”,“android”,“ios”或UID,若有多个收件人,请使用符号“|”分隔开。如,10086|10010|10000", '#name',{tips: 1,time:10000});
})
})
function changeTitle() {
const len = $('input[data-id="title"]').val().length
$('#title').text(len)
}
function changeContent() {
const len = $('textarea[data-id="content"]').val().length
$('#content').text(len)
}
function changeSenderName() {
const len = $('input[data-id="senderName"]').val().length
$('#senderName').text(len)
}
var uuid = getUuid();
var herolist;
var djnum = 1;
var adddjcur = 1;
var heronum = 1;
var equipNum = 1;
var gemNum=1;
var customItemNum = 1;
var skinNum = 1;
var languagelist;
var skinList
var itemList;
var itemCostList;
var equipList;
var gemList;
var pageTail=0;
function AddItemList(uiId){
var data =new Array();
for (let [key, value] of Object.entries(itemList)) {
data.push({id:key,text:value})
}
$('#'+uiId).select2({
placeholder: '请选择',
data:data
});
}
function AddEquipList(uiId){
var data =new Array();
for (let [key, value] of Object.entries(equipList)) {
data.push({id:key,text:value})
}
$('#'+uiId).select2({
placeholder: '请选择',
data:data
});
}
function AddGemList(uiId){
var data =new Array();
for (let [key, value] of Object.entries(gemList)) {
data.push({id:key,text:value})
}
$('#'+uiId).select2({
placeholder: '请选择',
data:data
});
}
function AddSkinList(uiId){
var data =new Array();
for (let [key, value] of Object.entries(skinList)) {
data.push({id:key,text:value})
}
$('#'+uiId).select2({
placeholder: '请选择',
data:data
});
}
const hashMap = new Map();
function selectCustomItem(id,type){
if(type==-1){
$('#customItemId'+id).html('')
return;
}
console.log(id+"--"+type)
if(hashMap.has(type)){
let data=hashMap.get(type);
viewCustomItem(id,data)
return;
}
$.get(Page.SvrIp + "/api/select_itemlist",
{ token: cookie.get("token"),type:type }
, function (d) {
if (d.data !== undefined) {
hashMap[type] = d.data;
viewCustomItem(id,d.data)
}
});
}
function viewCustomItem(id,data){
debugger
$('#customItemId'+id).html('')
var list =new Array();
for (let [key, value] of Object.entries(data)) {
list.push({id:key,text:value})
}
$('#customItemId'+id).select2({
placeholder: '请选择',
data:list
});
}
function AddLanguage() {
$("#LanguageDiv").append(template("contenthtml", { list: languagelist }));
}
function DelLanguage(t) {
$(t).parents("[data-id=contentdiv]").remove();
}
function getUuid() {
if(sessionStorage.getItem('uuid')) return sessionStorage.getItem('uuid');
sessionStorage.setItem('uuid', Guid.NewGuid().ToString());
return sessionStorage.getItem('uuid');
}
function updateUUID() {
sessionStorage.setItem('uuid', Guid.NewGuid().ToString());
}
//lang_abbr
function Load_languagelist() {
$.get(Page.SvrIp + "/api/select_language",
{ token: cookie.get("token") }
, function (d) {
languagelist = JSON.parse(d.Data);
AddLanguage();
});
}
function Load_ItemList() {
$.get(Page.SvrIp + "/api/select_itemlist",
{ token: cookie.get("token"),type:2 }
, function (d) {
itemList = d.data;
AddItemList("item1");
});
}
function Load_EquipList() {
$.get(Page.SvrIp + "/api/select_itemlist",
{ token: cookie.get("token"),type: 1 }
, function (d) {
equipList = d.data;
AddEquipList("equip1");
});
}
function Load_GemList() {
$.get(Page.SvrIp + "/api/select_itemlist",
{ token: cookie.get("token"),type: 5 }
, function (d) {
gemList = d.data;
AddGemList("gem1");
});
}
function Load_SkinList() {
$.get(Page.SvrIp + "/api/select_itemlist",
{ token: cookie.get("token"),type: 4 }
, function (d) {
skinList = d.data;
AddSkinList("skin1");
});
}
function Load_ItemCostList() {
$.get(Page.SvrIp + "/api/select_item_cost",
{ token: cookie.get("token") }
, function (d) {
itemCostList = d.data;
});
}
function del(i) {
--djnum;
$("#itemdiv" + i).remove();
}
function delcur(i) {
--adddjcur;
$("#curdiv" + i).remove();
}
function delhero(i) {
--heronum;
$("#herodiv" + i).remove();
}
function delEquip(i) {
--equipNum;
$("#equipdiv" + i).remove();
}
function delGem(i) {
--gemNum;
$("#gemdiv" + i).remove();
}
function delSkin(i) {
--skinNum;
$("#skindiv" + i).remove();
}
function delCustomItem(i) {
--customItemNum;
$("#customItemDiv" + i).remove();
}
$("#adddj").click(function () {
if (GetAllNum() >= 12) {
layer.alert("附件总量不超过12");
return;
}
if (djnum == 12) {
alert("道具数量不能多于12种");
return;
}
++djnum;
$("#adddj").before(template("itemhtml", {
djnum: djnum
}));
AddItemList('item'+djnum);
});
$("#addEquip").click(function () {
if(GetAllNum() >= 12) {
layer.alert("附件总量不超过12");
return;
}
++equipNum;
$("#addEquip").before(template("equiphtml", {
djnum: equipNum
}));
AddEquipList('equip'+equipNum);
});
$("#addGem").click(function () {
if(GetAllNum() >= 12) {
layer.alert("附件总量不超过12");
return;
}
++gemNum;
$("#addGem").before(template("gemhtml", {
djnum: gemNum
}));
AddGemList('gem'+gemNum);
});
$("#addSkin").click(function () {
if(GetAllNum() >= 12) {
layer.alert("附件总量不超过12");
return;
}
++skinNum;
$("#addSkin").before(template("skinhtml", {
djnum: skinNum
}));
AddSkinList('skin'+skinNum);
});
function GetAllNum() {
return djnum + heronum + equipNum + gemNum + skinNum;
}
function iniselect2(id) {
$('#' + id).select2({
placeholder: '请选择',
data: herolist,
width: "100%"
});
}
function Oncheck(i) {
var ti = $(i).val();
console.info(ti);
//默认选中全服
if ($("input[name=Realm]:checked").length == 0) {
$("input[name=Realm][value=0]").prop('checked', true);
return;
}
if (ti == 0) {
if ($("input[name=Realm][value=0]").prop('checked')) {
$("input[name=Realm]:not([value=0])").prop('checked', false);
return;
}
} else {
if ($("input[name=Realm][value=0]").prop('checked')) {
$("input[name=Realm][value=0]").prop('checked', false);
return;
}
}
}
$(function () {
Load_realmlist();
Load_languagelist();
// Load_skins()
Load_ItemList()
Load_EquipList()
Load_GemList();
Load_SkinList();
Load_ItemCostList()
$.get(Page.SvrIp + "/api/select_heros",
{
token: cookie.get("token")
},
function (d) {
}
);
})
var uidtext;
function readtext() {
var file = $("#uidtext")[0].files[0];
if(file) {
var index= file.name.lastIndexOf(".");//获取最后一个.的位置
var ext = file.name.substr(index+1);//获取后缀
var pattern = /^(txt|csv)$/;
if(!pattern.test(ext)) {
layer.msg("文件格式不支持");
return false;
}
var reader = new FileReader();
reader.readAsText(file);
reader.onload = function () {
//统一格式 |
if(ext === 'txt') {
uidtext = reader.result.replace(new RegExp("\r\n", "gm"), "|");
} else {
uidtext = reader.result.match(/\d{6}/g).join('|')
}
console.info(uidtext);
layer.msg("检测到" + uidtext.split('|').length + "条UID");
$("#name").val(uidtext);
$("#name").prop("disabled", true);
}
}
}
$(function () {
$("#query").click(function () {
setuptChartTable_new(pageTail);
});
var _d = new Date();
layui.laydate.render({
elem: '#stadate',
value: _d.getFullYear() + "-" + (_d.getMonth() + 1) + "-" + _d.getDate()
});
layui.laydate.render({
elem: '#enddate',
value: _d.getFullYear() + "-" + (_d.getMonth() + 1) + "-" + _d.getDate()
});
layui.laydate.render({
elem: '#playerCreateTime'
, type: 'datetime'
});
layui.laydate.render({
elem: '#timeLimit_start',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
});
layui.laydate.render({
elem: '#timeLimit_end',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
});
var args = initPage('已发送');
});
function merge(res) {
var data = res.data;
var mergeIndex = 0;//定位需要添加合并属性的行数
var mark = 1; //这里涉及到简单的运算,mark是计算每次需要合并的格子数
var columsName = ['dateStr', 'uuid'];//需要合并的列名称
var columsIndex = [0,9];//需要合并的列索引值
for (var k = 0; k < columsName.length; k++) { //这里循环所有要合并的列
var trArr = $(".layui-table-body>.layui-table").find("tr");//所有行
for (var i = 1; i < res.data.length; i++) { //这里循环表格当前的数据
var tdCurArr = trArr.eq(i).find("td").eq(columsIndex[k]);//获取当前行的当前列
var tdPreArr = trArr.eq(mergeIndex).find("td").eq(columsIndex[k]);//获取相同列的第一列
if (data[i][columsName[k]] == data[i-1][columsName[k]]) { //后一行的值与前一行的值做比较,相同就需要合并
mark += 1;
tdPreArr.each(function () {//相同列的第一列增加rowspan属性
$(this).attr("rowspan", mark);
});
tdCurArr.each(function () {//当前行隐藏
$(this).css("display", "none");
});
}else {
mergeIndex = i;
mark = 1;//一旦前后两行的值不一样了,那么需要合并的格子数mark就需要重新计算
}
}
mergeIndex = 0;
mark = 1;
}
}
function dateToString(d, afterMinutes = 0) {
let date = new Date(d); //1. js获取当前时间
let min = date.getMinutes(); //2. 获取当前分钟
date.setMinutes(min + afterMinutes); //3. 设置当前时间+afterMinutes分钟:把当前分钟数+afterMinutes后的值重新设置为date对象的分钟数
console.log(afterMinutes)
let year = date.getFullYear();
let month = (date.getMonth() + 1) < 10 ? ("0" + (date.getMonth() + 1)) : (date.getMonth() + 1);
let day = date.getDate() < 10 ? ("0" + date.getDate()) : date.getDate();
let hours = date.getHours() < 10 ? ('0' + date.getHours()) : date.getHours()
let minutes = date.getMinutes() < 10 ? ('0' + date.getMinutes()) : date.getMinutes()
let seconds = date.getSeconds() < 10 ? ('0' + date.getSeconds()) : date.getSeconds()
let formatDate = year+'-'+month+'-'+day + " " + hours + ":" + minutes + ":" + seconds;
return formatDate;
}
function setuptChartTable_new(tail) {
pageTail=tail;
layui.table.render({
elem: '#sendDatatab'
, url: Page.SvrIp + '/api/select_email' //数据接口
, where: {
token: cookie.get("token"),
startDate: $("#stadate").val(),
endDate: $("#enddate").val(),
tail:tail
}
, page: true
, cols: [[
{ field: 'id', title: '邮件ID', width: 100 },
{ field: 'is_sync', title: '是否发送', width: 100 },
{ field: 'dateStr', title: '开始日期', width: 160 },
{ field: 'endTimeStr', title: '结束日期', width: 160 }
// , { field: 'timeLimit', title: '到期时间', width: 160, templet: function (d) {
// var str = dateToString(d.dateStr, d.timeLimit);
// return str;
// }
// }
, { field: 'name', title: '收件人', width: 80 }
, { field: 'title', title: '标题', width: 180 }
// , {
// field: 'curstr', title: '货币', width: 140, templet: function (d) {
// var str = "";
// if (!d.curstr) {
// return "";
// }
// var list = d.curstr.split('#');
// for (var i in list) {
// var x = list[i].split('|');
// str += `id ${x[0]} 数量 ${x[1]}<br/>`;
// }
// return str;
// }
// }
, {
field: 'itemstr', title: '道具', width: 140, templet: function (d) {
var str = "";
if (!d.itemstr) {
return "";
}
var list = d.itemstr.split('#');
for (var i in list) {
var x = list[i].split('|');
str += `id ${x[0]} 数量 ${x[1]} <br/>`;
}
return str;
}
},
{
field: 'equipStr', title: '武器', width: 140, templet: function (d) {
var str = "";
if (!d.equipStr) {
return "";
}
var list = d.equipStr.split('#');
for (var i in list) {
var x = list[i].split('|');
str += `id ${x[0]} 数量 ${x[1]} <br/>`;
}
return str;
}
},
{
field: 'customItemStr', title: '其他物品', width: 140, templet: function (d) {
var str = "";
if (!d.customItemStr) {
return "";
}
var list = d.customItemStr.split('#');
for (var i in list) {
var x = list[i].split('|');
var type="";
if(x[0]=='4'){
type='皮肤'
}if(x[0]=='5'){
type ="宝石"
}
str += `类型:${type},id ${x[1]} 数量 ${x[2]} <br/>`;
}
return str;
}
}
, { field: 'realmlist', title: '服务器', width: 80 }
, { field: 'content', title: '邮件正文', width: 200 }
, { field: 'uuid', title: '编辑', width: 180, templet: '#bt'}
, { field: 'contentList', title: '详情', width: 80, templet: '#btDetail'}
]]
, parseData: function (res) { //res 即为原始返回的数据
console.dir(res)
debugger;
return {
"code": res.ret, //解析接口状态
"msg": res.msg, //解析提示文本
"count": res.count, //解析数据长度
"data": res.data //解析数据列表
};
},
done : function(res, curr, count) {
// merge(res);
}
});
}
layui.table.on('tool(sendDatatab)', function(obj){
var uuid = obj.data.uuid ;
var id =obj.data.id;
if(obj.event === 'recall') {
layer.confirm('确定撤回该条邮件吗?', function(index){
var asyncSend=(new Date(obj.data.dateStr).getTime() > new Date().getTime())
var table="mail_box";
if(asyncSend){
table="mail_box_temp"
}
$.get(Page.SvrIp + "/api/recall_email",
{
token: cookie.get("token"),
uuid,
table
},
function (data) {
if (data.ret == 0) {
layer.msg('撤回成功');
setuptChartTable_new(pageTail);
}
});
layer.close(index);
});
} else if (obj.event === 'openDetail') {
var data = obj.data;
console.log(data.contentList)
layer.open({
type: 1
,offset: 'auto' //具体配置参考:/docs/modules/layer.html#offset
,id: 'layerDemoAuto'//防止重复弹出
,content: '<div style="padding: 20px 40px;">'+
`<p>发送日期:${data.dateStr}</p>` +
`<p>收件人:${data.name}</p>` +
`<p>标题:${data.title}</p>` +
`<p>货币:${data.curstr}</p>` +
`<p>道具:${data.itemstr}</p>` +
`<p>自定义:${data.customItemStr }</p>` +
`<p>服务器:${data.realmlist}</p>` +
`<p>apk版本参数:${data.versionParam}</p>` +
`<p>开始时间:${data.dateStr}</p>` +
`<p>到期时间:${data.endTimeStr}</p>` +
`<p>玩家创建时间:${getLocalTime(data.playerCreateTime)}</p>` +
`<p>邮件正文:${data.content}</p>` +
`<b>邮件正文列表:</b>` +
`<p>${data.contentList.map(item => {
return `<p><span>标题:${item.title}</span> <span>内容:${item.content}</span> <span>语言:${item.language}</span> <span>发送者:${item.senderName}</span></p>`
}).join('')}</p>`
+'</div>'
,btn: '关闭'
,btnAlign: 'c' //按钮居中
,shade: 0 //不显示遮罩
,yes: function(){
layer.closeAll();
}
});
}else if(obj.event=="review"){
layer.msg('确定将这封邮件发送出去吗?<br>请仔细核对邮件内容', {
time: 200000, //20s后自动关闭
btn: ['同意', '拒绝', '再想想'],
yes: function(index, layero){
reviewMail(uuid,id,0)
layer.msg('同意');
},
btn2:function(index, layero){
reviewMail(uuid,id,-2)
layer.msg('拒绝');
},
btn3:function(index,layero){
layer.msg('好好想想');
}
});
}
else if(obj.event=="delete"){
layer.msg('确定要删除?', {
time: 200000, //20s后自动关闭
btn: ['删除', '再想想'],
yes: function(index, layero){
DeleteReviewMail(uuid,id)
layer.msg('删除');
},
btn2:function(index, layero){
layer.msg('再想想');
},
});
}
})
function reviewMail(uuid,id,status){
$.get(Page.SvrIp + "/api/review_mail",
{
token: cookie.get("token"),
uuid,
id,
status
},
function (data) {
if (data.ret == 0) {
layer.msg('操作成功');
setuptChartTable_new(pageTail);
}
});
}
function DeleteReviewMail(uuid,id){
$.get(Page.SvrIp + "/api/delete_refuse_mail",
{
token: cookie.get("token"),
uuid,
id
},
function (data) {
if (data.ret == 0) {
layer.msg('操作成功');
setuptChartTable_new(pageTail);
}
});
}
function getLocalTime(nS) {
return new Date(parseInt(nS) * 1000).toLocaleString();
}
</script>
<script type="text/x-handlebars-template" id="box">
<div class="panel-heading">
<div class="selectbox pull-right" id="{{chartId}}_datepicker">
<i class="fa fa-calendar"></i>
<span>{{startDate}} {{endDate}}</span> <b class="caret"></b>
</div>
<div class="pull-right btn-group" data-toggle="buttons">
<lable class="btn btn-default active" title="图表模式" name="{{chartId}}_mode_chart">
<input type="radio"><i class="fa fa-bar-chart-o" />
</lable>
<lable class="btn btn-default" title="表格模式" name="{{chartId}}_mode_table">
<input type="radio"><i class="fa fa-table" />
</lable>
</div>
<div>
<!-- Nav tabs -->
<ul class="nav nav-pills multibox-tab">
{{#each tabs}}
<li{{#if @first}} class="active" {{/if}}>
<a href="#{{../chartId}}_tab_{{@index}}" data-toggle="tab" desc="{{this}}">{{this}}</a></li>
{{/each}}
</ul>
</div>
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="flot-chart mtss-chart">
<div class="flot-chart-content" id="{{chartId}}_chartZone"></div>
</div>
</div>
</script>
<!--<script src="../js/send-email.js"></script>-->
<link href="../bower_components/select2/select2.min.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="../bower_components/select2/select2.min.js"></script>
</body>
</html>