var editMarketingObj = {};
// 打开编辑窗口
function initMarketingEdit(obj) {
obj = editMarketingObj = obj || getMarketingCache();// 如果没有,则从缓存中取得
bindMarketingEvent();//初始化事件
// 活动类型名称
$("#marketingTypeName").text(obj.onsaleType);
// 基本信息显示
var picInputDom = $("#marketingPic");
if (obj.img) {
picInputDom.siblings('.iconfont').addClass('mui-hidden');
picInputDom.siblings('img').attr('src', obj.img).removeClass('mui-hidden');
picInputDom.siblings('.delpic').removeClass('mui-hidden');
} else {
picInputDom.siblings('.iconfont').removeClass('mui-hidden');
picInputDom.siblings('img').attr('src', '').addClass('mui-hidden');
picInputDom.siblings('.delpic').addClass('mui-hidden');
}
//名称
$("#marketingName").val(obj.name || "");
//说明
$("#marketingDesc").val(obj.desc || "");
//初始化时间选择
initTimeSelect();
//选中设备初始化
initDeviceList();
//初始化自定义参数
initMarketingParam();
}
//初始化时间选择
function initTimeSelect() {
var objIn = editMarketingObj;
function setTimeTitle() {
$('#startTime .selected-text').text(objIn.startTime);
$('#endTime .selected-text').text(objIn.endTime);
}
$('.datepicker .mui-button-row button').tap(function () {
var range = $(this).attr('range');
setTimeRange(range);//快速日期选择
startTimePicker.setSelectedValue(objIn.startTime);
endTimePicker.setSelectedValue(objIn.endTime);
});
function setTimeRange(range) {
objIn.startTime = moment().format("YYYY-MM-DD");
if (range && range > 0) {
objIn.endTime = moment().add(range, "day").format("YYYY-MM-DD");
}
setTimeTitle();
$('.datepicker .mui-button-row button').removeClass('active');
$('.datepicker .mui-button-row button[range=' + range + ']').addClass('active');
}
// 如果日期为空,则默认为7天;如果是编辑,则按编辑的日期显示
if (!objIn.startTime && !objIn.endTime) {
setTimeRange(7)
} else {
setTimeTitle();
}
//可选日期范围
var pickerBegin = moment().add(-2, "year").toDate();//控件可选最小时间
var pickerEnd = moment().add(10, "year").toDate();//控件可选最大时间
var options = {
type: "date",
beginDate: pickerBegin,
endDate: pickerEnd
};
var startTimeBtn = $('#startTime');
var startTimePicker = new mui.DtPicker(options);
startTimePicker.setSelectedValue(objIn.startTime);
startTimeBtn[0].addEventListener('tap', function () {
startTimePicker.show(function (time) {
objIn.startTime = time.y.text + '-' + time.m.text + '-' + time.d.text + '';
$('#startTime .selected-text').text(objIn.startTime);
});
}, false);
var endTimeBtn = $('#endTime');
var endTimePicker = new mui.DtPicker(options);
endTimePicker.setSelectedValue(objIn.endTime);
endTimeBtn[0].addEventListener('tap', function () {
endTimePicker.show(function (time) {
objIn.endTime = time.y.text + '-' + time.m.text + '-' + time.d.text + '';
$('#endTime .selected-text').text(objIn.endTime);
});
}, false);
}
// 初始化选中设备列表
function initDeviceList() {
var data = {
"pageIndex": 1,
"pageSize": 1000,// 暂定默认获取1000台
"sort": "devType",//默认按分组排序,然后会按设备类型排序
};
var logicalCodeList = editMarketingObj.logicalCodeList || [];
$(".deviceTotal").text("已选" + logicalCodeList.length + "台");
sendRequest("/dealer/equipmentList?random=" + Math.random() * 1000, "GET", data, function (res) {
var panelDom = $(".deviceList");
var list = res.para.dataList;
var groupId = null;
var groupDom = null;
for (var index in list) {
var obj = list[index];
// 如果遍历到新的分组,则新建分组dom
if (obj.groupId != groupId) {
// 如果不是该设备的管理员,则直接忽略该分组的数据
if (!obj.isManager) {
continue
}
groupId = obj.groupId;
groupDom = $('
');
panelDom.append(groupDom);
}
var deviceStatusObj = getDeviceStatus(obj);
var onlineStatus = deviceStatusObj.onlineStatus;
var onlineClass = deviceStatusObj.onlineClass;
var workStatus = deviceStatusObj.workStatus;
var workClass = deviceStatusObj.workClass;
var thisDom = $('');
groupDom.find(".group-list-container").append(thisDom);
for (var codeIndex in logicalCodeList) {
var code = logicalCodeList[codeIndex];
if (code == obj.logicalCode) {
thisDom.find(".checkbox-btn-sub").prop("checked", true);
break;
}
}
}
})
}
function getDeviceStatus(obj) {
var onlineStatus = "";//离线状态文字
var onlineClass = "";//在线状态样式
var workStatus = null;//工作状态文字
var workClass = null;//工作状态样式
//如果是纯蓝牙设备,则不展示离线、在线
if (obj.channelType && obj.channelType.indexOf('BlueTooth') > -1 && obj.channelType.indexOf('GPRS') == -1) {
onlineStatus = "蓝牙";
onlineClass = "mark-blue iconfont icon-lanya";
} else {
if (obj.online == 1) {
onlineStatus = "在线";
onlineClass = "online";
} else if (obj.online == 0) {
onlineStatus = "离线";
onlineClass = "offline";
//需要显示离线文字,离线和离线繁忙都是获取不到设备状态的,所有不展示信号
if (obj.offlineTimeLong == 0 || obj.offlineTimeLong == null) {
} else {
onlineStatus = moment().set('second', -obj.offlineTimeLong).fromNow() + "离线";
}
}
}
// 设备工作信息,1正常,2异常
if (obj.status == 0) {
workClass = "c-success";
workStatus = "空闲";
}
if (obj.status == 1) {
workClass = "c-lgreen";
workStatus = obj.statusInfo || "繁忙";
}
if (obj.status == 2) {
workClass = "c-red";
workStatus = obj.statusInfo || "故障";
}
//设备管理状态【人为设置的故障优先展示】
if (obj.isFault == true) {
workStatus = "设备故障";
workClass = "c-red";
}
return {
onlineStatus: onlineStatus,
onlineClass: onlineClass,
workStatus: workStatus,
workClass: workClass
}
}
// 初始化自定义参数
function initMarketingParam() {
var obj = editMarketingObj;
var detailDict = editMarketingObj.detailDict || {};
$("#custom-modal [key]").each(function () {
var key = $(this).attr("key");
$(this).find("input").val(detailDict[key]);
});
if (obj.onsaleType == "首次使用送金币" || obj.onsaleType == "京东新人1分购") {
$("[key='coins']").removeClass("mui-hidden").siblings().remove();
}
else if (obj.onsaleType == "首次免费按摩" || obj.onsaleType == "手机实名免费用") {
$("[key='duration']").removeClass("mui-hidden").siblings().remove();
}
else {
$("#custom-modal").remove()
}
}
function setMarketingCache(data) {
localStorage.marketingCache = JSON.stringify(data);
}
function getMarketingCache() {
return localStorage.marketingCache ? JSON.parse(localStorage.marketingCache) : null;
}
function getMarketingParam() {
// 暂时只有input,如果以后其他的输入方式,得进一步优化
var detailDict = {};
$("#custom-modal [key]").each(function () {
var key = $(this).attr("key");
detailDict[key] = $(this).find("input").val();
});
return detailDict;
}
// 编辑窗口事件绑定
function bindMarketingEvent() {
// 编辑窗口保存事件
$("#editMarketingPanel").on("submit", function (evt) {
//阻止submit默认表单提交行为
evt.preventDefault();
if (editMarketingObj.startTime > editMarketingObj.endTime) {
mui.alert('开始日期不能大于结束日期', '温馨提示', '确定');
return false;
}
//获取自定义参数
var detailDict = getMarketingParam();
// 获取选中的逻辑码
var logicalCodeList = [];
$(".checkbox-btn-sub:checked").each(function () {
logicalCodeList.push($(this).val());
});
var data = {
"name": $("#marketingName").val(),
"img": $("#showPic").attr("src"),
"desc": $("#marketingDesc").val(),
"logicalCodeList": logicalCodeList,
"startTime": editMarketingObj.startTime,
"endTime": editMarketingObj.endTime,
"detailDict": detailDict
};
var url = "/dealer/editOnsale";
if (editMarketingObj.id) {
data.id = editMarketingObj.id;
url = "/dealer/editOnsale";
} else {
// 如果没有id,则为新增营销活动
url = "/dealer/createOnsale";
// 创建需要指定活动类型
data.onsaleType = $("#marketingTypeName").text();
}
var saveBtn = $("#saveBtn")[0];
saveBtn.disabled = true;
sendRequest({
url: url,
type: "POST",
mask: "正在保存...",
data: data,
contentType: "json",
success: function (res) {
if (res.result == 1) {
if (editMarketingObj.id) {
mui.toast("修改成功");
setTimeout(function () {
history.back();
}, 800)
} else {
mui.toast("新增成功");
setTimeout(function () {
history.go(-2);
}, 800)
}
} else {
mui.toast(res.description);
}
saveBtn.disabled = false;
}
});
evt.stopPropagation();
});
function myImageCompressor(file, callback) {
if (window.ImageCompressor) {
const imageCompressor = new ImageCompressor();
if (file) {
imageCompressor.compress(file, {
quality: .7,
// 图片尺寸
maxWidth: 1920,
maxHeight: 1920,
success: function (result) {
var formData = new FormData();
formData.append('file', result, result.name);
if (callback) {
callback(formData);
}
}
})
}
} else {
//图片插件未加载完成提示
mui.toast("图片上传工具未加载,刷新页面重试...");
}
}
// 删除图片
$('.delpic').tap(function (e) {
var self = $(this);
self.siblings('img').attr('src', '').addClass('mui-hidden');
self.addClass('mui-hidden');
self.siblings('.iconfont').removeClass('mui-hidden');
self.siblings('input').show();
return false;
});
// 图片选择事件
var picUpload = $("#marketingPic");
if (typeof FileReader === 'undefined') {
picUpload.attr('disabled', true);
picUpload.tap(function () {
mui.alert('当前微信浏览器版本过低,请升级微信后再试!', '温馨提示', '我知道了');
});
} else {
picUpload.change(function (e) {
var self = $(this);
var file = picUpload[0].files[0];
// 大小限制 10M
if (file && file.size > 10000 * 1024) {
msgPopup('温馨提示', '图片大小超出规定范围!', '知道了');
return;
}
if (!(/^image\/.*$/i.test(file.type))) {
mui.toast('该文件不是图片,请重新选择!');
return;
} else {
myImageCompressor(file, function (formData) {
var url = '/dealer/uploadCreative';
myAjax({
url: url,
type: 'POST',
data: formData,
processData: false,
contentType: false,
beforeSend: function () {
showLoading('上传中...');
},
success: function (res) {
if (res.result == 1) {
self.hide();
self.siblings('.iconfont').addClass('mui-hidden');
self.siblings('img').attr('src', res.para).removeClass('mui-hidden');
self.siblings('.delpic').removeClass('mui-hidden');
} else {
mui.toast('上传失败,请重试');
}
},
complete: function () {
hideLoading();
//重置文件路径,避免选中重复不触发onchange
var imgUpload = $("#marketingPic");
imgUpload[0].value = "";
}
});
});
}
});
}
// 全选事件
$(".deviceList ").on("change", "input[type=checkbox]", function () {
var inputDom = $(this);
if (inputDom.hasClass("dev-all")) {
if (inputDom[0].checked) {
$(".checkbox-btn-sub,.dev-group-all").prop("checked", true);
} else {
$(".checkbox-btn-sub,.dev-group-all").prop("checked", false);
}
} else if (inputDom.hasClass("dev-group-all")) {
if (inputDom[0].checked) {
inputDom.closest(".group-container").find(".group-list-container .checkbox-btn-sub").prop("checked", true);
} else {
inputDom.closest(".group-container").find(".group-list-container .checkbox-btn-sub").prop("checked", false);
}
}
var checkedLength = $(".checkbox-btn-sub:checked").length;
$(".deviceTotal").text("已选" + checkedLength + "台");
});
}