mui.init({
beforeback: function() { //获得父页面的webview
var list = plus.webview.currentWebview().opener(); //触发父页面的自定义事件(refresh),从而进行刷新
mui.fire(list, 'reload');
//返回true,继续页面关闭逻辑
return true;
}
});
$(".pricset_con").hide();
function escape2Html(str) {
var arrEntities = {
'lt': '<',
'gt': '>',
'nbsp': ' ',
'amp': '&',
'quot': '"'
};
return str.replace(/&(lt|gt|nbsp|amp|quot);/ig, function(all, i) {
return arrEntities[i];
});
};
mui.plusReady(function() {
$("#isSale").prop("checked", true);
var self = plus.webview.currentWebview();
var shopId = self.id;
var goodsId = self.goodsId;
var richText = '';
var E = window.wangEditor
var editor = new E('#goodsDesc')
// editor.customConfig.showLinkImg = false // 隐藏“网络图片”tab
// editor.customConfig.uploadFileName = 'yourFileName' //给上传的本地图片文件命名的统一名称
// editor.customConfig.uploadImgServer = '/upload'; //官方文档上写的是服务器地址,也就是上传图片的方法名
// 允许上传到七牛云存储
editor.customConfig.qiniu = true;
editor.customConfig.debug = true;
// editor.customConfig.onchange = function (html) {
// // 监控变化,同步更新到 textarea
// // $text1.val(html)
// };
editor.create();
// 初始化七牛上传
if (goodsId > 0) {
$(".title").text("编辑商品")
JZL.ajax(qlgUrl("app/shops/getGoodsInfo"), {
shopId: shopId,
goodsId: goodsId
}, function(data) {
//console.log(data);
if (data.status == 1) {
var html1 = '';
var data = data.data;
var i = 0,
j = 0;
var res = '';
var bjSpec = data.isSpec;
if (1 == data.isSpec) {
$(".pricset_con").show()
var id = data.setNameId;
getRecommend(page, pageSize, id)
JZL.ajax(qlgUrl('app/shops/getGoodsSpecCats'), {
shopId: shopId,
id: id
}, function(data1) {
if (1 == data1.status) {
var that = this
var arr = [];
var arr2 = {};
for (var i = 0; i < data1.data.length; i++) {
arr.push(data1.data[i].list);
arr2[data1.data[i].catId] = data1.data[i].list;
}
var cLength = 0;
var catId = 0;
var goodsRes = "";
if (arr.length > 0) {
var calc = calcDescartes(arr);
var cIndex = 0,
cArr = [];
while (true) {
if (cIndex >= calc.length) {
break;
}
//区分单规格和多规格
if (Array.isArray(calc[cIndex])) {
res = calc[cIndex].join(' ');
cArr = calc[cIndex];
cLength = calc[cIndex].length;
} else {
res = calc[cIndex];
cArr[0] = res;
cLength = 1;
}
for (i = 0; i < cArr.length; i++) {
//获取catId
// console.log(cArr[i]);
$.each(arr2, function(ind, val) {
//console.log(val);
$.each(val, function(index, value) {
if (value == cArr[i]) {
catId = ind;
// console.log(catId);
return;
}
});
});
html1 += '' + //属性值id
'' + //分类ID
'';
}
//console.log(j);
html1 += '' + //规格表ID 新增传0
'
';
j++;
cIndex++;
}
$('.pricset_con_con').html(html1);
//var setNum = 0;
mui.each(data.spec, function(idx, val) {
// console.log(val.names);
//if (calc[setNum].length != val.names.length) return false;
//setNum++;
goodsRes = '';
i = 0;
mui.each(val.names, function(index, value) {
goodsRes += value.itemName + ' '; //hongse 39ma
})
var showSpecNames = $('label[name="showSpecNames[]"]');
var specNameArr = [];
for (var k = 0; k < showSpecNames.length; k++) {
specNameArr[$(showSpecNames[k]).attr('data-id')] = $(showSpecNames[k]).text();
}
$.each(specNameArr, function(sitem, sval) {
if ($.trim(goodsRes) == $.trim(sval)) { //去除空格 不然报错
i = 0;
mui.each(val.names, function(index, value) {
document.getElementById('specItemIds[' + +sitem + '][' + i + ']').value = value.itemId //属性值ID 新增传0
i++;
});
document.getElementById('specIds[' + +sitem + ']').value = val.id //规格表ID,新增传0
document.getElementById('specPrice[' + +sitem + ']').value = val.specPrice
document.getElementById('specStock[' + +sitem + ']').value = val.specStock
if (1 == val.isDefault) {
//checked
var inputList = $('input[name=defaultId]')
$.each(inputList, function(index, value) {
this.previousElementSibling
if (sitem == this.value) {
this.checked = true
}
})
}
}
})
})
}
}
})
} else if (0 == data.isSpec) {
// $('#setNameId').html('')
getRecommend(page, pageSize)
}
if (1 == data.isSale) {
$('#isSale').prop("checked", "checked");
}
mui.each(data, function(index, element) {
if ($('#' + index).attr("type") == "hidden" & $('#' + index).hasClass('inp')) {
var imgindex = index.substring(0, index.length - 3);
var obj = '#' + imgindex;
if ($(obj).is('img')) {
$(obj).attr("src", hyhImgUrl(element))
$('#' + index).val(element)
} else if ($('#' + index).hasClass('gallery')) {
var html = '';
if (element.length > 0) {
var imgurls = element.split(",") ? imgurls = element.split(",") : imgurls = element;
html = ''
for (var i = 0; i < imgurls.length; i++) {
html += ''
// $('#' + index+'Img['+i+']').val(hyhImgUrl(imgurls[i]))
}
var maxNum = +$('.galleryImg').last().attr('data-id') + 1; //$('.batchImg').children('.galleryImg').length - 1;
html += '';
$(".batchImg").html(html)
} else {
html = "";
html =
'';
$(".batchImg").html(html)
}
}
} else if (index == 'goodsCatIdPath') {
// data.goodsCatIdPath 三级目录
var goodsCatIdPathArr = [];
var pathArr = ["largeCat", "mediumCat", "smallCat"]
//console.log(data.goodsCatIdPath);
goodsCatIdPathArr = data.goodsCatIdPath.split('_')
goodsCatIdPathArr.pop() //移除最后一个数组元素 _
mui.each(pathArr, function(idx, ele) {
//console.log(idx);
switch (ele) {
case 'largeCat':
getCatIdPathName(goodsCatIdPathArr[0], function(data) {
getGoodsCats('largeCat', 0, goodsCatIdPathArr[0]);
})
break;
case 'mediumCat':
getCatIdPathName(goodsCatIdPathArr[1], function(data) {
$('#mediumCat').html('')
});
break;
case 'smallCat':
getCatIdPathName(goodsCatIdPathArr[2], function(data) {
$('#smallCat').html('')
});
break;
}
})
} else {
$('#' + index).val(element)
}
})
if ('' != data.goodsDesc) {
var Desc = escape2Html(data.goodsDesc)
editor.txt.html(Desc)
}
} else {
mui.alert(data.msg)
}
})
} else {
getGoodsCats("largeCat", 0)
getRecommend(page, pageSize);
$(".title").text("添加商品")
}
function getCatIdPathName(catId, callback) {
JZL.ajax(qlgUrl("app/goodscats/getCatName"), {
catId: catId
}, function(data) {
callback(data);
})
}
//获取商品总规格列表
var page = 1;
var pageSize = 10000;
var isjiazai = 1;
function getRecommend(page, pageSize, defaultVal) {
var recommenddata = {
page: page ? page : 1,
pageSize: pageSize ? pageSize : 10000
}
recommenddata.shopId = shopId
if (isjiazai == 0) {
return;
} else {
isjiazai = 0;
}
JZL.ajax(qlgUrl('app/shops/getSpecs'), recommenddata, function(data) {
// ////console.log(data);
data = toJson(data);
if (data.status == 1) {
data = data.data;
var html = '';
if (typeof(defaultVal) == "undefined") {
// ////console.log(1);
$.each(data.Rows, function() {
html += ''
});
if (page == 1) {
$('#setNameId').html(html);
} else {
$('#setNameId').append(html);
}
} else {
// ////console.log(defaultVal);
$.each(data.Rows, function() {
if (this.id == defaultVal) {
selected = 'selected';
} else {
selected = '';
}
html += '';
});
if (page == 1) {
$('#setNameId').html(html);
} else {
$('#setNameId').append(html);
}
}
} else {
// mui.alert('发生错误请刷新后重试!');
mui.alert(data.msg);
// location.reload();
}
isjiazai = 1;
})
}
//获取商品规格
//笛卡尔积
function calcDescartes(array) {
if (array.length < 2) return array[0] || [];
return [].reduce.call(array, function(col, set) {
var res = [];
col.forEach(function(c) {
set.forEach(function(s) {
var t = [].concat(Array.isArray(c) ? c : [c]);
t.push(s);
res.push(t);
})
});
return res;
});
}
// 笛卡尔积
// combins = function(args) {
//
// if (args.length < 2) return args[0] || [];
// // if (arguments.length < 2) return arguments[0] || [];
// //var args = Array.prototype.slice.call(arguments);
// var that = {
// index: 0,
// nth: function(n) {
// var result = [],
// d = 0;
// for (; d < this.dim; d++) {
// var l = this[d].length;
// var i = n % l;
// result.push(this[d][i]);
// n -= i;
// n /= l;
// }
// return result;
// },
// next: function() {
// if (this.index >= size) return;
// var result = this.nth(this.index);
// this.index++;
// return result;
// }
// };
// var size = 1;
// for (var i = 0; i < args.length; i++) {
// size = size * args[i].length;
// that[i] = args[i];
// }
// that.size = size;
// that.dim = args.length;
// return that;
// }
$('#setNameId').change(function() {
var id = $('#setNameId option:selected').attr('data-id')
// ////console.log(id);
var html1 = "";
if (typeof id == "undefined" || 0 == id) {
$(".pricset_con").hide()
} else {
$(".pricset_con").show()
JZL.ajax(qlgUrl('app/shops/getGoodsSpecCats'), {
shopId: shopId,
id: id
}, function(data) {
// ////console.log(data);
if (1 == data.status) {
html1 = "";
var arr = [];
var arr2 = {};
for (var i = 0; i < data.data.length; i++) {
arr.push(data.data[i].list);
arr2[data.data[i].catId] = data.data[i].list;
}
var calc = calcDescartes(arr);
var cIndex = 0;
var i = 0,
j = 0,
cArr = [];
while (true) {
if (cIndex >= calc.length) {
break;
}
//区分单规格和多规格
if (Array.isArray(calc[cIndex])) {
res = calc[cIndex].join(' ');
cArr = calc[cIndex];
cLength = calc[cIndex].length;
} else {
res = calc[cIndex];
cArr[0] = res;
cLength = 1;
}
for (i = 0; i < cArr.length; i++) {
//获取catId
// console.log(cArr[i]);
$.each(arr2, function(ind, val) {
//console.log(val);
$.each(val, function(index, value) {
if (value == cArr[i]) {
catId = ind;
// console.log(catId);
return;
}
});
});
html1 += '' + //属性值id
'' + //分类ID
'';
}
//console.log(j);
html1 += '' + //规格表ID 新增传0
'';
j++;
cIndex++;
}
$('.pricset_con_con').html(html1);
} else {
mui.alert(data.msg)
}
})
}
})
// 下一页
var check = true;
mui("body").on('tap', '.next_btn', function() {
check = true;
$('.isemptyinp').each(function() {
if (!this.value || "" == $.trim(this.value)) {
var label = this.previousElementSibling;
mui.alert(label.innerText + "不允许为空")
check = false;
return false;
}
})
if ($("#shopPrice").val() == "" & $("#setNameId option:selected").val() == "0" & check == true) {
mui.alert("商品没有属性必须输入商品价格")
check = false;
return false;
}
if ($("#setNameId option:selected").val() != 0 && check == true) {
if ($('input[name="defaultId"]:checked').length == 0) {
mui.alert("请选择默认规格")
check = false;
return false
}
$('.pricset_con_con input').each(function() {
if ((!$(this).val() || "" == $.trim(this.value))) {
mui.alert("请输入数据")
$(this).focus();
check = false;
return false;
}
})
}
// var shopPrice= $('input[name="defaultId"]:checked').parent().parent().find('input[name="specPrice[]"]').val();
// ////console.log(shopPrice)
if ($("#isSale").prop("checked")) {
isSale = "1";
} else {
isSale = "0";
}
if (check == true) {
$(".addcon").css("display", "none")
$(".pre").css("display", "block");
backTop();
}
})
//预览
$('.prelook').hide();
// mui("body").on('tap', '.prelook', function() {
//
//
//
// })
// 上一页
mui('body').on('tap', '.pre_btn', function() {
$(".addcon").css("display", "block")
$(".pre").css("display", "none")
})
// ////console.log($("#goodsDesc").text());
//提交
// 判断是否上架
var isSale = "",
setNameId,
isSpec;
//提交
var click = false;
mui('.btn').on('tap', '.submit_btn ', function() {
// if (click == true) return;
richText = editor.txt.text()
// 判断有没有商品属性
if ($("#setNameId option:selected").val() != 0) {
isSpec = 1;
} else {
isSpec = 0;
}
if (click == true) return;
if ($("#isSale").prop("checked")) {
isSale = "1";
} else {
isSale = "0";
}
var imgs = '';
var data = $('input[name="gallery[]"]');
$.each(data, function() {
if ('' != $(this).val())
imgs = $(this).val() + ',' + imgs;
})
imgs = imgs.substring(0, imgs.lastIndexOf(','));
$('#gallery').val(imgs);
//默认选中
var defaultPrice = $('input[name="defaultId"]:checked').parent().parent().find('input[name="specPrice[]"]').val();
var params = JZL.getParams(".inp");
params.shopId = shopId;
params.isSale = isSale;
params.isSpec = isSpec;
params.defaultId = $('input[name="defaultId"]:checked').val();
params.goodsDesc = editor.txt.html();
params.setNameId = $('#setNameId option:selected').val()
if (isSpec == 1) {
// params.shopPrice = shopPrice
$('#shopPrice').val(defaultPrice);
}
params.shopPrice = $('#shopPrice').val()
click = true;
if (goodsId > 0) {
params.goodsId = goodsId;
}
JZL.ajax(qlgUrl('app/shops/addGoods'), params, function(data) {
if (data.status == 1) {
click = false;
mui.toast(data.msg);
mui.back();
} else {
// mui.alert('发生错误请刷新后重试!');
// location.reload();
mui.alert(data.msg)
}
})
})
//获取类目
$('.selectarea').on("change", ".area", function() {
var objs = ['largeCat', 'mediumCat', 'smallCat'];
// var areaStr = ['请选择', '请选择', '请选择'];
var level = +$(this).attr('data-level') + 1; //0
pid = $('#' + objs[level - 1] + ' option:selected').val();
getGoodsCats(objs[level], pid);
})
//三级类目
function getGoodsCats(obj, pid, defaultId) {
JZL.ajax(qlgUrl('app/shops/getGoodsCats'), {
pid: pid
},
function(data) {
// ////console.log(data);
if (data.status == 1) {
data = data.data;
var html = '';
if ('undefined' == typeof(defaultId)) {
$.each(data, function() {
// ////console.log(this);
html += ''
});
} else {
$.each(data, function() {
if (this.catId == defaultId) {
selected = 'selected';
} else {
selected = '';
}
html += ''
});
}
$('#' + obj).html(html);
}
})
}
// 上传图片
$(".batchImg").on("tap", '.galleryImg', function() {
var num = $(this).attr('data-id');
UP.init("gallery[" + num + "]", "test", "galleryImg[" + num + "]", 1);
var that = $(this);
openCamera(function(t, status, fileName, serverName) {
var html = '
';
that.html(html);
var maxNum = $('.galleryImg').last().attr('data-id'); //$('.batchImg').children('.galleryImg').length - 1;
if (num == maxNum) {
maxNum++;
html = '
';
$(".batchImg").append(html);
}
});
})
$(".oneImg").on("tap", '#goods', function() {
UP.init("goodsImg", "test", "goods")
openCamera(function(t, status, fileName, serverName) {
var html = '
';
$(".goods").html(html);
})
})
// 删除图片
$(".batchImg").on('tap', '.delete', function(e) {
e.preventDefault();
e.stopPropagation()
var that = $(this)
if (confirm('确认删除图片?')) {
that.parent().remove()
}
})
//上传图片到七牛;
var uptoken = '';
var rs = send_request();
rs = JSON.parse(rs);
uptoken = rs.token;
function send_request() {
var xmlhttp = null;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
if (xmlhttp != null) {
serverUrl = hyhUrl('oss/qiniu.php');
xmlhttp.open("GET", serverUrl, false);
xmlhttp.send(null);
return xmlhttp.responseText
} else {
mui.alert("Your browser does not support XMLHTTP.");
}
};
// 初始化七牛上传的方法
function uploadInit() {
var btnId = editor.imgMenuId;
var containerId = editor.toolbarElemId;
var textElemId = editor.textElemId;
// 创建上传对象
var uploader = Qiniu.uploader({
runtimes: 'html5,flash,html4', //上传模式,依次退化
browse_button: btnId, //上传选择的点选按钮,**必需**
//uptoken_url: rs,
//Ajax请求upToken的Url,**强烈建议设置**(服务端提供)
uptoken: uptoken,
// url: 'http://up-z1.qiniup.com',
// uptoken : '',
//若未指定uptoken_url,则必须指定 uptoken ,uptoken由其他程序生成
// unique_names: true,
// 默认 false,key为文件名。若开启该选项,SDK会为每个文件自动生成key(文件名)
// save_key: true,
// 默认 false。若在服务端生成uptoken的上传策略中指定了 `sava_key`,则开启,SDK在前端将不对key进行任何处理
// domain: 'http://7xrjl5.com1.z0.glb.clouddn.com/',
// domain:$('#domain').val(),
domain: rs.url,
//bucket 域名,下载资源时用到,**必需**
container: containerId, //上传区域DOM ID,默认是browser_button的父元素,
max_file_size: '100mb', //最大文件体积限制
flash_swf_url: '../js/plupload/Moxie.swf', //引入flash,相对路径
filters: {
mime_types: [
//只允许上传图片文件 (注意,extensions中,逗号后面不要加空格)
{
title: "图片文件",
extensions: "jpg,gif,png,bmp"
}
]
},
max_retries: 3, //上传失败最大重试次数
dragdrop: true, //开启可拖曳上传
drop_element: textElemId, //拖曳上传区域元素的ID,拖曳文件或文件夹后可触发上传
chunk_size: '4mb', //分块上传时,每片的体积
auto_start: true, //选择文件后自动上传,若关闭需要自己绑定事件触发上传
init: {
'FilesAdded': function(up, files) {
plupload.each(files, function(file) {
// 文件添加进队列后,处理相关的事情
// printLog('on FilesAdded');
});
},
'BeforeUpload': function(up, file) {
// 每个文件上传前,处理相关的事情
// printLog('on BeforeUpload');
},
'UploadProgress': function(up, file) {
// 显示进度
// printLog('进度 ' + file.percent)
},
'FileUploaded': function(up, file, info) {
// 每个文件上传成功后,处理相关的事情
// 其中 info 是文件上传成功后,服务端返回的json,形式如
// {
// "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98",
// "key": "gogopher.jpg"
// }
// printLog(info);
// 参考http://developer.qiniu.com/docs/v6/api/overview/up/response/simple-response.html
var domain = up.getOption('domain');
var res = $.parseJSON(info);
var sourceLink = domain + res.key; //获取上传成功后的文件的Url
// 插入图片到editor
editor.cmd.do('insertHtml', '
')
},
'Error': function(up, err, errTip) {
//上传出错时,处理相关的事情
// printLog('on Error');
},
'UploadComplete': function() {
//队列文件处理完毕后,处理相关的事情
// printLog('on UploadComplete');
}
// Key 函数如果有需要自行配置,无特殊需要请注释
//,
// 'Key': function(up, file) {
// // 若想在前端对每个文件的key进行个性化处理,可以配置该函数
// // 该配置必须要在 unique_names: false , save_key: false 时才生效
// var key = "";
// // do something with key here
// return key
// }
}
// domain 为七牛空间(bucket)对应的域名,选择某个空间后,可通过"空间设置->基本设置->域名设置"查看获取
// uploader 为一个plupload对象,继承了所有plupload的方法,参考http://plupload.com/docs
});
}
uploadInit();
// 封装 ////console.log 函数
function printLog(title, info) {
window.console && console.log(title, info);
}
})