<!DOCTYPE html>
|
<html>
|
|
<head>
|
<meta charset="utf-8" />
|
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
|
<meta http-equiv="X-UA-Compatible" content="chrome=1"/>
|
<title>消息编辑</title>
|
<link rel="stylesheet" type="text/css" href="../../../../css/doui.min.css"/>
|
<script src="../../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
|
<script src="../../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
<script type="text/javascript">
|
doui.importLoad({
|
importArray: [
|
// 雷打不动
|
getHostPath() + "js/jquery.min.js",
|
getHostPath() + "js/vue.min.js",
|
// 字体图标
|
getHostPath() + "fontAdmin/iconfont.css",
|
getHostPath() + "font/iconfont.css",
|
// dom模板
|
getHostPath() + "css/admin-all.css",
|
getHostPath() + "js/admin-creat.js",
|
// 编辑器
|
getHostPath() + "childPath/editor/wangEditor.min.js",
|
getHostPath() + "childPath/editor/wangEditor.config.js",
|
],
|
});
|
</script>
|
<!--自设-->
|
<style type="text/css">
|
/*输入说明*/
|
.shuoming{ width: 0.8rem; padding-top: 0.04rem; margin-right: 20px; text-align: right; }
|
/*商品框*/
|
.goodsDan{ width: 0.53rem; height: 0.53rem; position: relative; margin-right: 0.1rem; margin-bottom: 0.1rem; overflow: hidden; }
|
.goodsImg{ width: 0.53rem; height: 0.53rem; position: absolute; left: 0; top: 0; display: block; }
|
.goodsId{ width: 0.53rem; height: 0.14rem; line-height: 0.14rem; text-align: center; color: white; position: absolute; left: 0; bottom: 0; background-color: rgba(0,0,0,0.7); }
|
.goodsClose{ font-size: 0.07rem; width: 0.12rem; height: 0.12rem; line-height: 0.12rem; position: absolute; right: 0.01rem; top: 0.01rem; color: white; text-align: center; }
|
</style>
|
</head>
|
|
<body class="fontPC" style="display:none;">
|
<div id="allwai" class="heightenBox">
|
|
<!-- =============================================================== 搜索筛选(顶部) -->
|
<div class="admin-header">
|
<!--返回按钮-->
|
<div class="admin-btn-roundM bg-yellow click-scale" v-on:click='doui.pageToUrl({ type: "replace", url: "today_index.html" });'>
|
<div><i class="fi fi-left"></i></div>
|
<span class="admin-marginLeft">返回</span>
|
</div>
|
</div>
|
|
<!-- =============================================================== 内容区域 -->
|
<div class="admin-main-overHeader bg-white fboxCol Xstart Ycenter" style="padding-bottom:0.5rem;">
|
|
<!--标题-->
|
<div class="fboxRow Xstart Ystart" style="width:4rem; padding:0.1rem;">
|
<div class="shuoming font18 font-blue">推送标题</div>
|
<div class="flex1 fboxCol Xstart Ystart">
|
<textarea style="width:2.5rem; height:0.5rem;" placeholder="如:超级优惠来袭(不能携带emoji表情)" v-model="sub.title"></textarea>
|
</div>
|
</div>
|
|
<!--推送内容-->
|
<div class="fboxRow Xstart Ystart" style="width:4rem; padding:0.1rem;">
|
<div class="shuoming font18 font-blue">推送内容</div>
|
<div class="flex1 fboxCol Xstart Ystart">
|
<!--编辑框选择-->
|
<div class="fboxRow Xstart Ycenter" style="padding:0.04rem 0;">
|
<!--普通-->
|
<div class="fboxRow Xstart Ycenter cursor-pointer" v-on:click="content.typeClick(1)">
|
<div class=""><i class="fi" v-bind:class="content.edit==1?'fi-radio-ok font-green':'fi-radio-no font-gray'"></i></div>
|
<div class="font-black admin-marginLeft">普通文本域</div>
|
</div>
|
<div class="fboxRow Xstart Ycenter cursor-pointer" style="margin-left:0.2rem;" v-on:click="content.typeClick(2)">
|
<div class=""><i class="fi" v-bind:class="content.edit==2?'fi-radio-ok font-green':'fi-radio-no font-gray'"></i></div>
|
<div class="font-black admin-marginLeft">富文本编辑器</div>
|
</div>
|
</div>
|
<!--普通文本框-->
|
<textarea v-show="content.edit==1" style="width:2.6rem; height:0.8rem;" v-model="sub.content"></textarea>
|
<!--wang编辑器-->
|
<div v-show="content.edit==2" id="editor1"></div>
|
</div>
|
</div>
|
|
<!--推送用户ID-->
|
<div class="fboxRow Xstart Ystart" style="width:4rem; padding:0.1rem;">
|
<div class="shuoming font18 font-blue">推送用户</div>
|
<div class="flex1 fboxCol Xstart Ystart">
|
<textarea style="width:2.5rem; height:0.5rem;" placeholder="如:911382 (仅支持单ID,不填则全员推送)" v-model="sub.uid"></textarea>
|
</div>
|
</div>
|
|
<!--android推送版本-->
|
<div class="fboxRow Xstart Ystart" style="width:4rem; padding:0.1rem;">
|
<div class="shuoming font18 font-blue">android推送版本</div>
|
<div class="flex1 fboxWrap Xstart Ystart">
|
<!-- 一个选择项 -->
|
<div v-for="(item,index) in version.android" class="fboxRow Xcenter Ycenter cursor-pointer" style="margin:10px;" @click="version.checkClick('1',item)">
|
<div class="font18"><i class="fi" :class="version.result.android.indexOf(item.key)>=0?'fi-check-ok font-green':'fi-check-no font-gray'"></i></div>
|
<div style="margin-left:3px;">{{item.value}}</div>
|
</div>
|
</div>
|
</div>
|
|
<!--ios推送版本-->
|
<div class="fboxRow Xstart Ystart" style="width:4rem; padding:0.1rem;">
|
<div class="shuoming font18 font-blue">ios推送版本</div>
|
<div class="flex1 fboxWrap Xstart Ystart">
|
<!-- 一个选择项 -->
|
<div v-for="(item,index) in version.ios" class="fboxRow Xcenter Ycenter cursor-pointer" style="margin:10px;" @click="version.checkClick('2',item)">
|
<div class="font18"><i class="fi" :class="version.result.ios.indexOf(item.key)>=0?'fi-check-ok font-green':'fi-check-no font-gray'"></i></div>
|
<div style="margin-left:3px;">{{item.value}}</div>
|
</div>
|
</div>
|
</div>
|
|
<!--商品-->
|
<div class="fboxRow Xstart Ystart" style="width:4rem; padding:0.1rem;">
|
<div class="shuoming font18 font-blue">备选商品编辑</div>
|
<div class="flex1 fboxCol Xstart Ystart">
|
<!--操作选项-->
|
<div class="fboxRow Xstart Ycenter">
|
<!--获取按钮-->
|
<div class="admin-btn-roundM click-scale bg-blue" v-on:click="goods.fuGaiClick()">覆盖</div>
|
<!--追加-->
|
<div class="admin-btn-roundM click-scale bg-blue admin-marginLeft" v-on:click="goods.appendClick()">追加</div>
|
<!--清空商品-->
|
<div class="admin-btn-roundM click-scale bg-red admin-marginLeft" v-on:click="goods.delAll()">清空商品</div>
|
</div>
|
<!--商品展示框-->
|
<div class="fboxWrap Xstart Ystart" style="width:2.8rem; min-height:0.8rem; padding:0.1rem; margin-top:0.05rem; border:1px solid #CCC;">
|
<!--循环显示商品-->
|
<div v-for="(item, index) in goods.list" class="goodsDan border-round" v-bind:title="item.title">
|
<img class="goodsImg img-round" v-bind:src="item.pictUrl"/>
|
<div class="goodsId font12">{{item.auctionId}}</div>
|
<div class="goodsClose admin-btn-arcS bg-red cursor-pointer" v-on:click="goods.delClick(index)"><i class="fi fi-no"></i></div>
|
</div>
|
</div>
|
</div>
|
</div>
|
|
<!-- 是否自动发布 -->
|
<div class="fboxRow Xstart Ystart" style="width:4rem; padding:0.1rem;">
|
<div class="shuoming font18 font-blue">预设时间</div>
|
<div class="flex1 fboxCol Xstart Ystart">
|
<div class="inputShell admin-header-input"><input type="datetime-local" v-model="opt.start"/></div>
|
</div>
|
</div>
|
|
<!--确定推送-->
|
<div class="admin-btn-roundM bg-green click-scale" v-on:click="shuruUp()">保存(未推送)</div>
|
|
</div>
|
|
</div>
|
</body>
|
|
</html>
|
|
|
<!--页面数据-->
|
<script type="text/javascript">
|
|
// 编辑器申明
|
var editor = null;
|
// vue申明
|
var vm = null;
|
|
doui.onReady({
|
success: function ()
|
{
|
// vue 实例化
|
vm = new Vue({
|
el: "#allwai",
|
// 数据
|
data: {
|
|
// ---------------------------------------------------------------- 输入组件
|
// 版本号管理
|
version: {
|
android: [],
|
ios: [],
|
result: {
|
android: [],
|
ios: [],
|
},
|
checkClick: function (typeC, itemC)
|
{
|
// 安卓
|
if (typeC == "1")
|
{
|
// 结果中的顺序
|
var index = vm.version.result.android.indexOf(itemC.key);
|
// 如果是选过的 从key中除去该选项
|
if (index >= 0) { vm.version.result.android.splice(index, 1); }
|
// 没有则添加
|
else { vm.version.result.android.push(itemC.key); }
|
}
|
// ios
|
else if (typeC == "2")
|
{
|
// 结果中的顺序
|
var index = vm.version.result.ios.indexOf(itemC.key);
|
// 如果是选过的 从key中除去该选项
|
if (index >= 0) { vm.version.result.ios.splice(index, 1); }
|
// 没有则添加
|
else { vm.version.result.ios.push(itemC.key); }
|
}
|
},
|
// 获取
|
request: function ()
|
{
|
// 发起请求
|
doui.request({
|
type: "jsonp",
|
url: gethttp() + "/admin/new/api/v1/config/getVersionList",
|
data: {},
|
success: function (res)
|
{
|
if (res.code != 0) { doui.showToast({ content: res.msg }); }
|
else
|
{
|
// 安卓列表分析
|
for (var i = 0, mo = res.data.android; i < mo.length; i++)
|
{
|
var jiedian = { key: mo[i].version, value: mo[i].version, check: false };
|
vm.version.android.push(jiedian);
|
}
|
// ios列表分析
|
for (var i = 0, mo = res.data.ios; i < mo.length; i++)
|
{
|
var jiedian = { key: mo[i].version, value: mo[i].version, check: false };
|
vm.version.ios.push(jiedian);
|
}
|
}
|
},
|
});
|
},
|
},
|
|
// 推送内容wang编辑处
|
content: {
|
edit: "1", // 编辑器类型 1-普通 2-富文本
|
// 编辑器选择点击
|
typeClick: function (editC) { vm.content.edit = editC; },
|
// wang的富文本获取
|
wangHtmlGet: function () { vm.sub.content = wang.htmlGet(editor); },
|
},
|
|
// 备选商品
|
goods: {
|
list: [],
|
// 从本地分析商品数据
|
localGoodsParsing: function ()
|
{
|
var back = [];
|
// 从本地获取商品
|
doui.localStorageGet({
|
key: "goodsGroup",
|
fail: function () { doui.showToast({ content: "未备选推送商品" }); },
|
success: function (localData)
|
{
|
for (var i = 0, mo = localData; i < mo.length; i++)
|
{
|
// 用于显示的商品格式
|
var thisGoods = {
|
pictUrl: mo[i][0].key, // 商品图片
|
title: mo[i][1].key, // 商品名称
|
auctionId: mo[i][2].key, // 商品id
|
};
|
back.push(thisGoods);
|
}
|
}
|
});
|
// 返回值
|
return back;
|
},
|
// 覆盖 点击
|
fuGaiClick: function ()
|
{
|
var localData = vm.goods.localGoodsParsing();
|
vm.goods.list = localData;
|
},
|
// 追加 点击
|
appendClick: function ()
|
{
|
var localData = vm.goods.localGoodsParsing();
|
vm.goods.list = vm.goods.list.concat(localData);
|
},
|
// 商品上面的删除 点击
|
delClick: function (indexC) { vm.goods.list.splice(indexC, 1); },
|
// 清空商品
|
delAll: function () { vm.goods.list = new Array(); },
|
},
|
|
// 分享设置
|
opt: {
|
// 自动发布时间
|
start: "",
|
},
|
|
// ---------------------------------------------------------------- 上传数据总结
|
sub: {
|
id: "", // 当前推送的id
|
title: "", // 详细标题
|
content: "", // 详细内容字符串
|
uid: "", // 被推送用户id字符串 组
|
},
|
|
},
|
});
|
|
|
// 编辑器初始化
|
editor = wang.createGet({
|
ids: ['editor1'],
|
menus: [ 'justify', 'foreColor', 'emoticon', 'undo', 'redo', ],
|
emoji: true,
|
});
|
wang.style_scrollbar();
|
wang.style_menu(editor, "font-size:0.08rem;");
|
wang.style_editor(editor, "font-size:15px; width:2.7rem; height:0.8rem;");
|
wang.style_img("width:auto; max-height:30px;");
|
|
|
// 版本号获取
|
vm.version.request();
|
// url数据接收
|
doui.urlParam({
|
success: function (res)
|
{
|
// 新建
|
if (res.type == "new")
|
{
|
// 从本地获取商品
|
var goods = vm.goods.localGoodsParsing();
|
vm.goods.list = goods;
|
}
|
// 修改
|
else if (res.type == "updata")
|
{
|
// 获取id
|
vm.sub.id = res.id;
|
// 请求数据
|
tableGet();
|
}
|
}
|
});
|
|
|
document.body.style.display = "block";
|
}
|
});
|
|
|
// ============================================================================== 接口请求
|
// 获取详细信息
|
function tableGet ()
|
{
|
doui.showLoading({ content: "请求数据" });
|
doui.request({
|
type: "jsonp",
|
url: gethttp() + "/admin/new/api/v1/pushgoods/getPushInfo",
|
data: { id: vm.sub.id, },
|
success: function (res)
|
{
|
doui.hideLoading();
|
if (res.code != 0) { doui.showToast({ content: res.msg }); }
|
else
|
{
|
var item = res.data.pushGoods;
|
vm.sub.title = item.title; // 详细标题
|
vm.sub.content = item.content; // 详细内容字符串
|
wang.valueSet(editor, vm.sub.content);
|
vm.sub.uid = item.uid?item.uid:""; // 被推送用户id字符串 组
|
vm.version.result.android = item.listAndroid; // 推送版本
|
vm.version.result.ios = item.listIOS; // 推送版本
|
// 选择的商品
|
vm.goods.list = res.data.listGroup;
|
vm.opt.start = item.controlTime_str;
|
}
|
}
|
});
|
}
|
|
// 数据提交
|
function shuruUp ()
|
{
|
// 富文本时候
|
var alertContent = vm.sub.content;
|
if (vm.content.edit == 2) { vm.content.wangHtmlGet(); alertContent = wang.textGet(editor); }
|
// 商品id获取
|
var zu_id = new Array();
|
for (var i = 0; i < vm.goods.list.length; i++) { zu_id.push(vm.goods.list[i].auctionId); }
|
if (zu_id.length <= 0) { doui.showToast("请编辑商品"); return false; }
|
|
// 数据请求
|
doui.showLoading("处理中");
|
doui.request({
|
type: "jsonp",
|
url: gethttp() + '/admin/new/api/v1/pushgoods/save',
|
data: {
|
id: vm.sub.id, // 要操作的推送的id
|
uid: vm.sub.uid,
|
alertTitle: vm.sub.title,
|
alertContent: alertContent,
|
title: vm.sub.title,
|
content: vm.sub.content,
|
arrayAndroid: vm.version.result.android,
|
arrayIOS: vm.version.result.ios,
|
idArray: zu_id,
|
controlTime_str: vm.opt.start,
|
},
|
success: function (res)
|
{
|
doui.hideLoading();
|
if (res.code != 0) { doui.showToast({ content: res.msg }); }
|
else
|
{
|
doui.showToast({ content: "处理成功" });
|
// 删除本地数据
|
doui.localStorageDel({ key: "goodsGroup" });
|
// 回到上一页
|
setTimeout(function(){ doui.pageToUrl({ type: "replace", url: "today_index.html" }); }, 400);
|
}
|
}
|
});
|
|
}
|
|
</script>
|