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.
443 lines
14 KiB
443 lines
14 KiB
define(["biz"], function(biz) {
|
|
model = {};
|
|
model.multi = false;
|
|
model.callback = '';
|
|
model.ele = {};
|
|
model.listenPool = [1];
|
|
model.selectedPool = {};
|
|
model.merchid = 0;
|
|
model.no_merchid = 0;
|
|
model.url = function(routes, merch) {
|
|
if (merch) {
|
|
var url = './merchant.php?c=site&a=entry&m=ewei_shopv2&do=web&r=' + routes.replace(/\//ig, '.')
|
|
} else {
|
|
var url = './index.php?c=site&a=entry&m=ewei_shopv2&do=web&r=' + routes.replace(/\//ig, '.')
|
|
}
|
|
return url
|
|
};
|
|
model.post_url = model.url('util.goods_selector', model.merchid);
|
|
model.open = function(callback, type, merchid, multi, api_url, selected_ids, no_merchid) {
|
|
model.merchid = merchid;
|
|
model.no_merchid = no_merchid;
|
|
model.post_url = model.url('util.goods_selector', merchid);
|
|
var elename = 'goods_selector';
|
|
if (api_url && api_url.length > 0) {
|
|
model.post_url = api_url
|
|
}
|
|
if (multi) {
|
|
model.multi = true
|
|
} else {
|
|
model.multi = false
|
|
}
|
|
if (type == 'creditshop') {
|
|
model.post_url += '&creditshop=1'
|
|
} else if (type == 'group') {
|
|
model.post_url += '&group=1'
|
|
}
|
|
if (merchid) {
|
|
model.post_url += '&merchid=' + merchid
|
|
}
|
|
model.callback = callback;
|
|
if (typeof(model.callback) == 'string') {
|
|
var url = model.url('util.goods_selector.js', merchid);
|
|
model.name = elename;
|
|
$('#goods-selector-modal').remove();
|
|
$('body').append('<div id="goods-selector-modal"></div>');
|
|
$.ajax({
|
|
url: url,
|
|
async: false,
|
|
success: function(htm) {
|
|
$('#goods-selector-modal').empty().html(htm);
|
|
return
|
|
}
|
|
});
|
|
model.ele = $("#goods_selector_" + model.name);
|
|
model.mask = model.ele.find(".modal");
|
|
model.close1 = model.ele.find(".modal").find(".close");
|
|
model.modal = model.ele.find(".modal").find(".modal-dialog");
|
|
model.close2 = model.ele.find(".modal").find(".modal-footer").find(".btn");
|
|
model.s2id_autogen1 = model.ele.find("#s2id_autogen1");
|
|
model.select2drop = model.ele.find("#select2-drop");
|
|
model.select2result = model.ele.find(".select2-result");
|
|
model.select2chosen = model.ele.find("#select2-chosen-2");
|
|
model.$search = model.ele.find(".search");
|
|
model.$goodsgroup = 0;
|
|
model.getpage(1);
|
|
model.mask.css("display", "block");
|
|
setTimeout("model.mask.addClass('in')");
|
|
var json = model.ele.find("textarea[name=" + model.name + "]").html();
|
|
if (model.isJSON(json)) {
|
|
model.selectedPool = JSON.parse(json)
|
|
} else {
|
|
model.selectedPool = {};
|
|
model.ele.find("textarea[name=" + model.name + "]").html("")
|
|
}
|
|
model.listen();
|
|
if (selected_ids && selected_ids.length > 0) {
|
|
$.each(selected_ids, function(i, v) {
|
|
model.selectedPool[v] = {
|
|
id: v
|
|
};
|
|
model.selectStatus()
|
|
})
|
|
}
|
|
}
|
|
};
|
|
model.init = function() {
|
|
var textareas = $(".goods-selector-textarea");
|
|
$.each(textareas, function(i, v) {
|
|
var obj = $(v);
|
|
var json = obj.html();
|
|
model.name = obj.attr("name");
|
|
if (model.isJSON(json)) {
|
|
model.selectedPool = JSON.parse(json)
|
|
} else {
|
|
model.selectedPool = {};
|
|
obj.html("")
|
|
}
|
|
model.put_selected_to_list()
|
|
});
|
|
$(document).on("click", ".goods-selector-cancel", function() {
|
|
model.name = $(this).parent().parent().parent().data("name");
|
|
var id = $(this).data("id");
|
|
model.del(id);
|
|
model.ele = $("#goods_selector_" + model.name);
|
|
var json = model.ele.find("textarea[name=" + model.name + "]").html();
|
|
if (model.isJSON(json)) {
|
|
model.selectedPool = JSON.parse(json)
|
|
} else {
|
|
model.selectedPool = {};
|
|
model.ele.find("textarea[name=" + model.name + "]").html("")
|
|
}
|
|
delete model.selectedPool[id];
|
|
model.saveSelected();
|
|
model.name = model.ele = undefined
|
|
});
|
|
$(document).on("click", ".goods-selector-op", function() {
|
|
model.name = $(this).parent().parent().parent().data("name");
|
|
var name = model.name;
|
|
model.ele = $("#goods_selector_" + model.name);
|
|
model.option_switch = $(model.ele).attr("data-switch");
|
|
var href = $(this).attr('href');
|
|
href = href.replace('nooption=undefined', 'nooption=' + model.option_switch);
|
|
$(this).attr('href', href);
|
|
var goodsid = $(this).data("id");
|
|
var thismodal = $("#goods-selector-opmodal-" + goodsid);
|
|
var json = $("#goods_selector_" + name).find(".goods-selector-textarea").html();
|
|
if (model.isJSON(json)) {
|
|
model.selectedPool = JSON.parse(json)
|
|
} else {
|
|
model.selectedPool = {};
|
|
model.ele.find("textarea[name=" + model.name + "]").html("")
|
|
}
|
|
var goods = model.selectedPool[goodsid]
|
|
});
|
|
$(document).on("click", ".goods-selector-op-option", function() {
|
|
model.ele = $("#goods_selector_" + model.name);
|
|
var goodsid = $(this).data("id");
|
|
var checked = $("#goods-selector-opmodal-" + goodsid).find(".option-item:checked");
|
|
var options = {};
|
|
$.each(checked, function(i, v) {
|
|
var thisobj = $(v);
|
|
var input = thisobj.parent().parent().find("input").not(".option-item");
|
|
var column = {};
|
|
$.each(input, function(j, k) {
|
|
column[$(k).attr("name")] = $(k).val()
|
|
});
|
|
var obj = {
|
|
id: thisobj.val(),
|
|
marketprice: thisobj.data("price"),
|
|
title: thisobj.parent().parent().find("td:nth-child(1)").text(),
|
|
stock: thisobj.parent().parent().find("td:nth-child(3)").text(),
|
|
column: column
|
|
};
|
|
options[thisobj.val()] = obj
|
|
});
|
|
var json = model.ele.find("textarea[name=" + model.name + "]").html();
|
|
if (model.isJSON(json)) {
|
|
model.selectedPool = JSON.parse(json)
|
|
} else {
|
|
model.selectedPool = {};
|
|
model.ele.find("textarea[name=" + model.name + "]").html("")
|
|
}
|
|
model.selectedPool[goodsid]["options"] = options;
|
|
model.saveSelected();
|
|
model.name = undefined
|
|
});
|
|
$(document).on("click", ".goods-selector-op-goods", function() {
|
|
model.ele = $("#goods_selector_" + model.name);
|
|
var goodsid = $(this).data("id");
|
|
var json = model.ele.find("textarea[name=" + model.name + "]").html();
|
|
if (model.isJSON(json)) {
|
|
model.selectedPool = JSON.parse(json)
|
|
} else {
|
|
model.selectedPool = {};
|
|
model.ele.find("textarea[name=" + model.name + "]").html("")
|
|
}
|
|
var column = {};
|
|
var input = $("#goods-selector-opmodal-" + goodsid).find("input");
|
|
$.each(input, function(j, k) {
|
|
column[$(k).attr("name")] = $(k).val()
|
|
});
|
|
model.selectedPool[goodsid]["column"] = column;
|
|
model.saveSelected()
|
|
});
|
|
model.p = $(".goods-selector-open");
|
|
model.p.click(function() {
|
|
var url = $(this).data('url');
|
|
var type = $(this).data('type');
|
|
if (type == 'creditshop') {
|
|
model.post_url += '&creditshop=1'
|
|
} else if (type == 'group') {
|
|
model.post_url += '&group=1'
|
|
}
|
|
var merchid = $(this).data('merchid');
|
|
if (merchid) {
|
|
model.post_url += '&merchid=' + merchid
|
|
}
|
|
var elename = $(this).attr("data-name");
|
|
model.callback = $(this).data('callback');
|
|
if (model.callback) {
|
|
var url = model.url('util.goods_selector.js', merchid);
|
|
if (model.loaded) {} else {
|
|
$('body').append('<div id="goods-selector-modal"></div>');
|
|
$.ajax({
|
|
url: url,
|
|
async: false,
|
|
success: function(htm) {
|
|
$('#goods-selector-modal').empty().html(htm);
|
|
model.loaded = 1;
|
|
return
|
|
}
|
|
})
|
|
}
|
|
}
|
|
model.name = elename;
|
|
model.ele = $("#goods_selector_" + model.name);
|
|
model.mask = model.ele.find(".modal");
|
|
model.close1 = model.ele.find(".modal").find(".close");
|
|
model.modal = model.ele.find(".modal").find(".modal-dialog");
|
|
model.close2 = model.ele.find(".modal").find(".modal-footer").find(".btn");
|
|
model.s2id_autogen1 = model.ele.find("#s2id_autogen1");
|
|
model.select2drop = model.ele.find("#select2-drop");
|
|
model.select2result = model.ele.find(".select2-result");
|
|
model.select2chosen = model.ele.find("#select2-chosen-2");
|
|
model.$search = model.ele.find(".search");
|
|
model.$goodsgroup = 0;
|
|
model.getpage(1);
|
|
model.mask.css("display", "block");
|
|
setTimeout("model.mask.addClass('in')");
|
|
var json = model.ele.find("textarea[name=" + model.name + "]").html();
|
|
if (model.isJSON(json)) {
|
|
model.selectedPool = JSON.parse(json)
|
|
} else {
|
|
model.selectedPool = {};
|
|
model.ele.find("textarea[name=" + model.name + "]").html("")
|
|
}
|
|
if (model.listenPool.indexOf(model.name) < 0) {
|
|
model.listen()
|
|
}
|
|
})
|
|
};
|
|
model.listen = function() {
|
|
$(document).keypress(function(e) {
|
|
if (e.which == 13 && model.ele != undefined) {
|
|
model.jumpnow(1);
|
|
return false
|
|
}
|
|
});
|
|
model.listenPool.push(model.name);
|
|
$(model.modal).on("click", ".pager-nav", function() {
|
|
var num = Number($(this).attr("page"));
|
|
model.jumpnow(num)
|
|
});
|
|
$(model.modal).on("change", ".page-raduis", function() {
|
|
var num = Number($(this).val());
|
|
$(this).parent().next("li").find("a").attr("page", num)
|
|
});
|
|
$(model.modal).on("click", ".selectit", function() {
|
|
var goods = {};
|
|
goods = $(this).data("json");
|
|
if (model.callback) {
|
|
goods.act = 1;
|
|
eval(model.callback + "(goods)");
|
|
if (!model.multi) {
|
|
$('.modal.in').find('.close').trigger('click')
|
|
} else {
|
|
$(this).removeClass("selectit").removeClass("label-primary").addClass("cancelit").addClass("label-danger").text("取消")
|
|
}
|
|
}
|
|
model.selectedPool[goods.id] = goods;
|
|
$(this).removeClass("selectit").removeClass("label-primary").addClass("cancelit").addClass("label-danger").text("取消");
|
|
model.put(goods.id)
|
|
});
|
|
$(model.modal).on("click", ".cancelit", function() {
|
|
var goods = {};
|
|
goods = $(this).data("json");
|
|
delete model.selectedPool[goods.id];
|
|
if (model.multi) {
|
|
goods.act = 0;
|
|
eval(model.callback + "(goods)")
|
|
}
|
|
$(this).removeClass("cancelit").removeClass("label-danger").addClass("selectit").addClass("label-primary").text("选择");
|
|
model.del(goods.id)
|
|
});
|
|
$(model.mask).click(function() {
|
|
model.mask.removeClass("in");
|
|
setTimeout("model.mask.css('display','none');", 150);
|
|
model.s2id_autogen1.css("border", "1px solid #efefef");
|
|
model.select2drop.hide();
|
|
model.saveSelected()
|
|
});
|
|
$(model.modal).click(function(event) {
|
|
var e = window.event || event;
|
|
if (e.stopPropagation) {
|
|
e.stopPropagation()
|
|
} else {
|
|
e.cancelBubble = true
|
|
}
|
|
model.select2drop.hide();
|
|
model.mask.css("display", "block");
|
|
model.s2id_autogen1.css("border", "1px solid #efefef")
|
|
});
|
|
$(model.close1).click(function(event) {
|
|
var e = window.event || event;
|
|
if (e.stopPropagation) {
|
|
e.stopPropagation()
|
|
} else {
|
|
e.cancelBubble = true
|
|
}
|
|
model.mask.removeClass("in");
|
|
setTimeout("model.mask.css('display','none');", 150);
|
|
model.saveSelected()
|
|
});
|
|
$(model.close2).click(function(event) {
|
|
var e = window.event || event;
|
|
if (e.stopPropagation) {
|
|
e.stopPropagation()
|
|
} else {
|
|
e.cancelBubble = true
|
|
}
|
|
model.mask.removeClass("in");
|
|
setTimeout("model.mask.css('display','none');", 150);
|
|
model.saveSelected()
|
|
});
|
|
$(model.s2id_autogen1).click(function() {
|
|
var e = window.event || event;
|
|
if (e.stopPropagation) {
|
|
e.stopPropagation()
|
|
} else {
|
|
e.cancelBubble = true
|
|
}
|
|
model.select2drop.show();
|
|
$(this).css("border", "1px solid #44abf7 ");
|
|
$(this).css("border-bottom", "0")
|
|
});
|
|
$(model.select2drop).click(function() {
|
|
var e = window.event || event;
|
|
if (e.stopPropagation) {
|
|
e.stopPropagation()
|
|
} else {
|
|
e.cancelBubble = true
|
|
}
|
|
model.select2drop.show()
|
|
});
|
|
model.ele.find('.fenlei').find('select').change(function() {
|
|
var e = window.event || event;
|
|
if (e.stopPropagation) {
|
|
e.stopPropagation()
|
|
} else {
|
|
e.cancelBubble = true
|
|
}
|
|
model.select2drop.hide();
|
|
model.goodsgroup = $(this).val();
|
|
model.select2chosen.html($(this).find("div").html());
|
|
model.s2id_autogen1.css("border", "1px solid #efefef")
|
|
});
|
|
$(model.select2result).hover(function() {
|
|
$(this).addClass("select2-highlighted")
|
|
}, function() {
|
|
$(this).removeClass("select2-highlighted")
|
|
})
|
|
};
|
|
model.put_selected_to_list = function() {
|
|
$.each(model.selectedPool, function(i, v) {
|
|
model.put(v.id)
|
|
});
|
|
model.selectedPool = {};
|
|
model.name = undefined
|
|
};
|
|
model.put = function(id) {
|
|
model.option_switch = $(model.ele).data("switch");
|
|
var url = "./index.php?c=site&a=entry&m=ewei_shopv2&do=web&r=util.goods_selector.op&id=" + id + "&nooption=" + model.option_switch + "&column=" + encodeURI($("#goods-selected-list-" + model.name).attr("data-column"));
|
|
if (model.option_switch == 0) {
|
|
url += "&nooption=1"
|
|
}
|
|
var set_color = "btn-danger";
|
|
var htm = '<tr id="goods-selected-goods' + id + '"> <td><img src="' + model.selectedPool[id].thumb + '" style="width: 40px;height: 40px;border: solid #ccc 1px"></td> <td><p class="title">' + model.selectedPool[id].title + '</p> <p class="text text-danger">¥' + model.selectedPool[id].marketprice + "</p></td> <td>" + '' + '</td> <td><a data-toggle="ajaxModal" href="' + url + '" class="btn ' + set_color + ' btn-sm goods-selector-op" data-id="' + model.selectedPool[id].id + '">商品设置</a> <a class="btn btn-default btn-sm goods-selector-cancel" data-id="' + id + '">取消</a></td> </tr>';
|
|
$("#goods-selected-list-" + model.name).append(htm)
|
|
};
|
|
model.del = function(id) {
|
|
$("#goods-selected-list-" + model.name).find("#goods-selected-goods" + id).remove()
|
|
};
|
|
model.selectStatus = function() {
|
|
var selectBtn = model.ele.find(".selectit");
|
|
$.each(selectBtn, function(i, v) {
|
|
var obj = $(v);
|
|
var thisid = obj.data("id");
|
|
if (model.selectedPool[thisid] !== undefined) {
|
|
obj.removeClass("selectit").removeClass("label-primary").addClass("cancelit").addClass("label-danger").text("取消")
|
|
}
|
|
})
|
|
};
|
|
model.isJSON = function(str) {
|
|
if (typeof str == "string") {
|
|
try {
|
|
var obj = JSON.parse(str);
|
|
if (str.indexOf("{") > -1) {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
} catch (e) {
|
|
console.log("隐藏域数据格式不能解析,已清空,请重新选择:" + e);
|
|
return false
|
|
}
|
|
}
|
|
return false
|
|
};
|
|
model.saveSelected = function() {
|
|
model.ele.find("textarea[name=" + model.name + "]").html(JSON.stringify(model.selectedPool));
|
|
model.selectedPool = {}
|
|
};
|
|
model.jumpnow = function(page) {
|
|
model.keyword = model.$search.val();
|
|
model.getpage(page, model.keyword, model.goodsgroup)
|
|
};
|
|
model.getpage = function(page, keywords, goodsgroup) {
|
|
if (!page > 0) {
|
|
page = 1
|
|
}
|
|
if (keywords == undefined) {
|
|
model.$search.val("")
|
|
}
|
|
var condition = model.ele.find("where").text();
|
|
$.ajax({
|
|
url: model.post_url,
|
|
type: "post",
|
|
data: {
|
|
data: {},
|
|
page: page,
|
|
keywords: keywords,
|
|
goodsgroup: goodsgroup,
|
|
condition: condition,
|
|
no_merchid: model.no_merchid
|
|
},
|
|
success: function(htm) {
|
|
model.ele.find(".content").empty().html(htm);
|
|
model.selectStatus()
|
|
},
|
|
})
|
|
};
|
|
return model
|
|
});
|