Authored by leo

Update: 增加自动保存模板,发布时自动保存

... ... @@ -23,7 +23,8 @@ module.exports = {
{name: "platform", type: "Number"},
{name: "appType", type: "Number"},
{name: "templateName", type: "String"},
{name: "modules", type: "String"}
{name: "modules", type: "String"},
{name: "flag", type: "Number"}
]
},
findShopDecoratorTemplates: {
... ...
... ... @@ -102,7 +102,14 @@ var Bll = {
Bll.renderAjax();
// 加载模板列表
Bll.renderTemplateList(0);
let index = 0;
$.each(shopTemplates, function(_index, template) {
if(template.flag && template.flag === 1) {
index = _index;
return;
}
});
Bll.renderTemplateList(index);
// 查询模板数据
Bll.getTemplateResource();
... ... @@ -216,7 +223,12 @@ var Bll = {
var moduleList = res.data.modules[0].resData;
// 数据库中 moduleData 存储的格式是字符串,需要转化成对象
$.each(moduleList, function(index, module) {
module.moduleData = JSON.parse(module.moduleData);
// 兼容自动保存模板,可能不包含模块数据
if(module.moduleData === undefined || module.moduleData.length === 0) {
module.moduleData = undefined;
} else {
module.moduleData = JSON.parse(module.moduleData);
}
});
Bll.moduleDataList = moduleList;
}
... ... @@ -837,7 +849,8 @@ var Bll = {
// 店招
case "ShopBanner":
moduleData = {
data: [{text: "", pic: "", linkType: "", resource: ""}]
data: [{text: "", pic: "", linkType: "", resource: ""}],
properties: {}
};
break;
// 双图
... ... @@ -846,7 +859,8 @@ var Bll = {
data: [
{text: "", pic: "", linkType: "", resource: ""},
{text: "", pic: "", linkType: "", resource: ""}
]
],
properties: {}
};
break;
// 三张图
... ... @@ -856,13 +870,15 @@ var Bll = {
{text: "", pic: "", linkType: "", resource: ""},
{text: "", pic: "", linkType: "", resource: ""},
{text: "", pic: "", linkType: "", resource: ""}
]
],
properties: {}
};
break;
// 视频
case "Video":
moduleData = {
data: [{text: {title: "", content: ""}, pic: "", video: ""}]
data: [{text: {title: "", content: ""}, pic: "", video: ""}],
properties: {}
};
break;
};
... ... @@ -1099,6 +1115,11 @@ var handleDecoratorTemplate = function() {
// 校验所有模块数据
$.each(Bll.moduleDataList, function(index, module) {
if(module.moduleData === undefined) {
module.dataValid = false;
}
// 单模块在保存时,已经校验通过,此处无需再次校验
if(module.dataValid == undefined || module.dataValid) {
return; // 不能使用 continue
... ... @@ -1160,6 +1181,52 @@ var handleDecoratorTemplate = function() {
return true;
}
var autoSaveTemplate = function() {
var result = handleDecoratorTemplate();
if(! result) {
return;
}
saveTemplate(1, '', function() {
// 保存模板为异步调用,此处需要使用回调的方式,否则选中的模板不是保存后的
publishDecoratorTemplate();
});
}
var saveTemplate = function(flag, name, cb) {
if(flag === 1) {
name = '自动保存';
}
common.util.__ajax({
url: '/shop/ModularDecoratorRest/saveDecoratorTemplate',
data: {
shopId: Bll.shopId,
platform: +t.active ? 1 : 0,
appType: Bll.appType,
templateName: name,
modules: JSON.stringify(Bll.moduleDataList),
flag: flag
}
}, function(res) {
if(res && res.code == 200) {
// 重载模板列表
Bll.getTemplates();
$.each(shopTemplates, function(index, template) {
if(template.templateId == res.data) {
Bll.renderTemplateList(index);
}
});
// 计数器置零
Bll.changedModuleMonitor = 0;
if(cb && typeof cb === 'function') {
cb.call();
}
}
});
}
// 存储模板,callback:保存成功后的回调
var saveDecoratorTemplate = function(cb) {
var result = handleDecoratorTemplate();
... ... @@ -1185,32 +1252,8 @@ var saveDecoratorTemplate = function(cb) {
common.util.__tip('请输入模板名称!', 'warning');
return false;
}
common.util.__ajax({
url: '/shop/ModularDecoratorRest/saveDecoratorTemplate',
data: {
shopId: Bll.shopId,
platform: +t.active ? 1 : 0,
appType: Bll.appType,
templateName: templateName,
modules: JSON.stringify(Bll.moduleDataList)
}
}, function(res) {
if(res && res.code == 200) {
// 重载模板列表
Bll.getTemplates();
$.each(shopTemplates, function(index, template) {
if(template.templateId == res.data) {
Bll.renderTemplateList(index);
}
});
// 计数器置零
Bll.changedModuleMonitor = 0;
if(cb && typeof cb === 'function') {
cb.call();
}
}
});
saveTemplate(0, templateName);
}
}
]
... ... @@ -1282,20 +1325,18 @@ var publishDecoratorTemplate = function() {
// 发布模板
$(document).on('click', '#publishBtn', function() {
// 检测到模块数据有变化,提示保存
if(Bll.changedModuleMonitor > 0) {
common.dialog.confirm('温馨提示', '装修模块内容有变化,是否先保存模板? 选择否,则会发布编辑前的模板!',
function() {
// 先保存模板,再发布模板
saveDecoratorTemplate(function() {
publishDecoratorTemplate();
});
}, function() {
// 直接发布模板
publishDecoratorTemplate();
});
} else {
if(Bll.changedModuleMonitor === 0) {
// 装修模板数据未有变化,直接发布模板
// 此处需要再次校验,防止自动保存模板中的模块没有数据,直接点击发布
var result = handleDecoratorTemplate();
if(! result) {
return;
}
publishDecoratorTemplate();
} else {
// 装修模板数据变化,先自动保存模板,然后发布
autoSaveTemplate();
}
});
... ... @@ -1327,8 +1368,22 @@ $(document).on('click', '#applyBtn', function() {
// 退出装修工具
$(document).on('click', '#quitBtn', function() {
common.dialog.confirm("温馨提示", "是否确认退出装修工具?为防止数据丢失,请确保已经存储模板!", function() {
common.dialog.confirm("温馨提示", "是否确认退出装修工具?", function() {
// window.close();
// 自动保存当前数据,无需校验
$.each(Bll.moduleDataList, function(index, module) {
if(module.moduleData === undefined) {
module.moduleData = '';
}
module.moduleOrder = index;
if(module.moduleStyle === undefined) {
module.moduleStyle = 0;
}
});
saveTemplate(1);
window.location.href = '/shop/modular/decorator';
});
});
... ...
... ... @@ -230,7 +230,7 @@
.decorator-template .template-del-icon {
position: absolute;
margin-top: -108px;
margin-left: 20px;
margin-left: 18px;
z-index: 21;
width: 20px;
height: 20px;
... ...