123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443 |
- 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=lionfish_comshop&do=admin&controller=' + routes.replace(/\//ig, '.')
- } else {
- var url = './index.php?c=site&a=entry&m=lionfish_comshop&do=admin&controller=' + 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=lionfish_comshop&do=admin&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
- });
|