var mediaTr; var delMedia; var mainTable; var mainRowID; var mainPos; $(document).ready(function () { delMedia = ''; loadTagsInput(); loadMedia(); loadKolMakeupCheckboxItem(); loadKolStyleCheckboxItem(); loadKolFansTypeCheckboxItem(); loadDataTable(); $('#kolSaveBtn').on('click', function () { var method = $('#method').val(); var kol_uid = $('#kol_uid').val(); var kol_name = $('#kol_name').val(); var kol_descript = $('#kol_descript').val(); var kol_contact1 = $('#kol_contact1').val(); var kol_contact2 = $('#kol_contact2').val(); var kol_men_ratio = $('#kol_men_ratio').val(); var kol_women_ratio = $('#kol_women_ratio').val(); var kol_13_17 = $('#kol_13_17').val(); var kol_18_24 = $('#kol_18_24').val(); var kol_25_34 = $('#kol_25_34').val(); var kol_35_44 = $('#kol_35_44').val(); var kol_45_54 = $('#kol_45_54').val(); var kol_55_64 = $('#kol_55_64').val(); var kol_65 = $('#kol_65').val(); var kol_photo = "" var kolMakeupStr = ""; var kolStyleStr = ""; var kolFansType = ""; var mediaArray = []; var tags = $('#kol_tags').val(); var tagsStr = ""; var src = $('#fileupload-avatar').parent().children('img').prop('src'); var origin = location.origin; src = src.replace(origin, ''); kol_photo = src; $.each($('input[name="kolMakeup[]"]:checked'), function () { kolMakeupStr = kolMakeupStr + $(this).val() + ","; }); $.each($('input[name="kolStyle[]"]:checked'), function () { kolStyleStr = kolStyleStr + $(this).val() + ","; }); $.each($('input[name="fansType[]"]:checked'), function () { kolFansType = kolFansType + $(this).val() + ","; }); $.each(tags, function (key, value) { tagsStr = tagsStr + value + ","; }); $('#media_table tbody tr').each(function () { var item = { kolMedia_uid: $(this).find('td').eq(5).children('button').eq(0).attr('data-uid'), option_uid: 'media', optionItem_uid: $(this).find('td').eq(5).children('button').eq(0).attr('media-uid'), kolMedia_url: $(this).find('td').eq(1).text().trim(), kolMedia_displayName: $(this).find('td').eq(3).text().trim(), kolMedia_accountName: $(this).find('td').eq(2).text().trim(), kolMedia_fansNum: $(this).find('td').eq(4).text().trim() } mediaArray.push(item); }); var err_msg = ""; if (kol_name == "") { err_msg += "KOL頻道名稱未填!\n"; } if (kolMakeupStr == "") { err_msg += "未勾選成員\n"; } if (kolStyleStr == "") { err_msg += "未勾選KOL 類型\n"; } if (kolFansType == "") { err_msg += "未勾選粉絲輪廓\n"; } if (mediaArray.length == 0) { err_msg += "無此KOL社群平台資料!"; } if (err_msg != "") { alert(err_msg); return; } mainTable = $('#dt-responsive').dataTable(); var formData = { method: method, kol_uid: kol_uid, kol_name: kol_name, kol_descript: kol_descript, kol_contact1: kol_contact1, kol_contact2: kol_contact2, kol_men_ratio: kol_men_ratio, kol_women_ratio: kol_women_ratio, kol_13_17: kol_13_17, kol_18_24: kol_18_24, kol_25_34: kol_25_34, kol_35_44: kol_35_44, kol_45_54: kol_45_54, kol_55_64: kol_55_64, kol_65: kol_65, kol_photo: kol_photo, kolMakeupStr: kolMakeupStr, kolStyleStr: kolStyleStr, kolFansType: kolFansType, kolTags: tagsStr, mediaArrayJson: JSON.stringify(mediaArray) } $.ajax({ url: "/Api/kolAddEditDelGet", type: "post", data: formData, success: function (data, textStatus, jqXHR) { var obj = data.kol; if (data.ret == "yes") { if (method == "add") { mainTable.fnAddData(obj); } if (method == "edit") { mainTable.fnUpdate(obj, mainPos); } $('#clientNewModal').modal('toggle'); } else { alert(data.message); if (data.err_code == "99999") { location.href = "/Root/Login"; } } }, error: function (jqXHR, textStatus, errorThrown) { alert('網路或伺服器發生錯誤,請稍後重試!'); } }); }); $('#optionItemDialogSaveBtn').on('click', function () { var method = $('#media_method').val(); var option_uid = 'media'; var kolMedia_name = $("#media_select option:selected").text(); var optionItem_uid = $("#media_select").val(); var media_uid = $('#media_select').val(); var kolMedia_url = $('#kolMedia_url').val(); var kolMedia_accountName = $('#kolMedia_accountName').val(); var kolMedia_displayName = $('#kolMedia_displayName').val(); var kolMedia_fansNum = $('#kolMedia_fansNum').val(); var err_msg = ""; if (optionItem_uid == "") { err_msg += "請選擇社群平台\n"; } if (kolMedia_url == "") { err_msg += "請填入KOL的社群平台網址!\n"; } if (checkUrl(kolMedia_url) == false) { err_msg += "請填入正確的社群平台網址!\n"; } if (kolMedia_fansNum.isNumber() == false) { kolMedia_fansNum = 0; } if (err_msg != "") { alert(err_msg); return; } if (method == "add") { var trHtml = ""; trHtml += ''; trHtml += ' ' + kolMedia_name + ' '; trHtml += ' ' + kolMedia_url + ' '; trHtml += ' ' + kolMedia_accountName + ' '; trHtml += ' ' + kolMedia_displayName + ' '; trHtml += ' ' + kolMedia_fansNum + ' '; trHtml += ' '; trHtml += ' '; trHtml += ' '; trHtml += ' '; trHtml += ''; $('#media_table tbody').append(trHtml); $('#socialItemModal').modal('toggle'); } if (method == "edit") { mediaTr.find('td').eq(0).text(kolMedia_name); mediaTr.find('td').eq(1).text(kolMedia_url); mediaTr.find('td').eq(2).text(kolMedia_accountName); mediaTr.find('td').eq(3).text(kolMedia_displayName); mediaTr.find('td').eq(4).text(kolMedia_fansNum); var method1 = mediaTr.find('td').eq(5).children('button').eq(0).attr('media-uid', optionItem_uid); var mehtod2 = mediaTr.find('td').eq(5).children('button').eq(1).attr('media-uid', optionItem_uid); $('#socialItemModal').modal('toggle'); } }); $('#socialNewBtn').on('click', function () { //var src = $('#fileupload-avatar').parent().children('img').prop('src'); //var origin = location.origin; //src = src.replace(origin, ''); //alert(src); $('#media_method').val('add'); $('#socialItemModal').modal('toggle'); }); $('#kolNewModal').on('click', function () { cleanModalData(); $('#method').val('add'); $('#clientNewModal').modal('toggle'); }); function loadDataTable() { var dataTables = { init: function init() { this.bindUIActions(); }, bindUIActions: function bindUIActions() { // event handlers this.table = this.handleDataTables(); // add buttons //this.table.buttons().container().appendTo('#dt-buttons').unwrap(); }, handleDataTables: function handleDataTables() { //$('#myTable').append(""); return $('#dt-responsive').DataTable({ dom: '<\'text-muted\'Bif>\n <\'table-responsive\'trl>\n <\'mt-4\'p>', lengthChange: true, lengthMenu: [[25, 50, 100, -1], [25, 50, 100, "All"]], pageLength: 25, buttons: [ //{ // text: '休假設定', // action: function (e, dt, node, config) { // vacationBtnFun(); // } //}, //'excelHtml5' ], language: { paginate: { previous: '', next: '' }, buttons: { copyTitle: 'Data copied', copyKeys: 'Use your keyboard or menu to select the copy command' } }, autoWidth: false, ajax: { url: '/Api/kolList', type: 'POST', data: function (d) { Object.assign(d, { bar_area: $('#bar_area').val(), is_lottery: $('#isLottery').val() }); return d; }, dataSrc: 'kolList' }, rowId: 'kol_uid', deferRender: true, initComplete: function () { $('#dt-responsive').on('click', 'a', function () { buttonClick2(this); }); $('#dt-responsive').on('click', 'button', function () { buttonClick2(this); }); $('#dt-responsive').on('click', 'input[name="selectedRow[]"]', function () { checkboxClick(this); }); }, order: [[5, 'desc']], info: true, search: "搜尋:", searching: true, columns: [{ data: 'kol_photo', className: 'align-middle', orderable: false, searchable: false }, { data: 'kol_name', className: 'align-middle text-left', orderable: true, searchable: true }, { data: 'kol_descript', className: 'align-middle text-left', orderable: true, searchable: true }, { data: 'kol_contact1', className: 'align-middle text-left', orderable: false, searchable: true }, { data: 'kol_contact2', className: 'align-middle text-left', orderable: false, searchable: true }, { data: 'kol_modifydate', className: 'align-middle text-left', orderable: false, searchable: true }, { data: 'kol_uid', className: 'align-middle text-center', orderable: false, searchable: false }], columnDefs: [ { targets: 0, className: 'align-middle text-center', orderable: false, searchable: false, render: function render(data, type, row, meta) { var ret = ''; ret += '
'; ret += ' '; ret += '
'; return ret; //return row.gift_city + row.gift_area + row.gift_address; //var editRet = ' '; //if (row.quotationUser_perm == "A" || row.quotationUser_perm == "D" || row.quotationUser_perm == "admin" || row.quotationUser_perm == "pro") { // editRet = editRet + ' '; //} //return editRet; } } , { targets: 2, orderable: false, searchable: false, render: function render(data, type, row, meta) { var ret = ''; $.each(row.makeups, function (key, value) { ret += value.optionItem_name + '/'; }); ret = ret.replace(/^\/+|\/+$/g, ''); return ret; //return '' + row.company_name + ''; } } , { targets: 5, orderable: false, searchable: false, render: function render(data, type, row, meta) { return (new Date(row.kol_modifydate)).format("yyyy/MM/dd hh:mm:ss"); } } , { targets: 6, orderable: false, searchable: false, render: function render(data, type, row, meta) { var ret = ''; ret += ''; ret += ''; return ret; } } //, { // targets: 2, // orderable: false, // searchable: false, // render: function render(data, type, row, meta) { // return row.company_serial; // } //}, { // targets: 3, // orderable: false, // searchable: false, // render: function render(data, type, row, meta) { // if (row.company_enabled == "Y") { // return ''; // } else { // return ''; // } // } //}, { // targets: 4, // orderable: false, // searchable: false, // render: function render(data, type, row, meta) { // return (new Date(row.company_createdate)).format("yyyy/MM/dd hh:mm:ss"); // } //}, { // targets: 5, // orderable: false, // searchable: false, // render: function render(data, type, row, meta) { // var editRet = ' '; // return editRet; // } //} ], }); }, handleSearchRecords: function handleSearchRecords() { var self = this; $('#table-search, #filterBy').on('keyup change focus', function (e) { var filterBy = $('#filterBy').val(); var hasFilter = filterBy !== ''; var value = $('#table-search').val(); self.table.search('').columns().search('').draw(); if (hasFilter) { self.table.columns(filterBy).search(value).draw(); } else { self.table.search(value).draw(); } }); } } dataTables.init(); } var url = "/Api/KolPhotoUpload"; // ============================================================= $('#fileupload-avatar').fileupload({ url: url, dropZone: null, dataType: 'json', autoUpload: true, acceptFileTypes: /(\.|\/)(jpe?g|png)$/i, maxFileSize: 5000000 }).on('fileuploadprocessalways', function (e, data) { var index = data.index; var file = data.files[index]; $('#avatar-warning-container').removeClass('show').text(''); if (file.error) { $('#avatar-warning-container').addClass('show').text(file.error); } }).on('fileuploadprogressall', function (e, data) { var progress = parseInt(data.loaded / data.total * 100, 10); $('#progress-avatar').addClass('show').children().css('width', progress + '%'); }).on('fileuploaddone', function (e, data) { var file = data.result.files[0]; var $img = $(this).parent().children('img'); var $old = $img.prop('src'); if (file.url) { $img.prop('src', file.url); } else if (file.error) { $('#avatar-warning-container').addClass('show').text(file.error); } $('#progress-avatar').removeClass('show').children().css('width', 0); }); // File upload using button // ============================================================= function loadTagsInput() { $('#kol_tags').select2({ width: '100%', tags: true, tokenSeparators: [',', ' '], multiple: true, minimumInputLength: 2, placeholder: '輸入Tag用空白或逗號分隔關鍵字', ajax: { url: '/Api/queryTags', dataType: 'json', delay: 500, type: 'post', // 要送出的資料 data: function (params) { // 在伺服器會得到一個 POST 'search' return { search: params.term }; }, processResults: function (data, params) { console.log(data.data) // 一定要返回 results 物件 return { results: data.data, } } }, createTag: function (params) { let term = $.trim(params.term); if (term.length < 2) { return null } return { id: term, text: term, // add indicator: isNew: true }; } }); $('#kol_tags').on('select2:select', function (e) { let tag = e.params.data; var formData = { search: tag.text } $.ajax({ url: "/Api/updateTags", type: "post", data: formData, success: function (data, textStatus, jqXHR) { var obj = data.data; if (data.ret == "yes") { $('#kol_tags').find('[value="' + tag.text + '"]').replaceWith(''); } else { alert(data.message); if (data.err_code == "99999") { location.href = "/Root/Login"; } } }, error: function (jqXHR, textStatus, errorThrown) { alert('網路或伺服器發生錯誤,請稍後重試!'); } }); }); } }); function buttonClick2(obj) { var type = obj.getAttribute('data-method'); var uid = obj.getAttribute('data-uid'); mainTable = $('#dt-responsive').dataTable(); mainRowID = $('#' + uid); mainPos = mainTable.fnGetPosition($('#' + uid)[0]); if (type == "del") { if (confirm('確定刪除此筆資料? 刪除後將無任何方法回復!')) { var formData = { method: "del", kol_uid: uid } $.ajax({ url: "/Api/kolAddEditDelGet", type: "post", data: formData, success: function (data, textStatus, jqXHR) { if (data.ret == "yes") { var row = mainTable.api().row(mainRowID).remove().draw(false); alert('刪除完成!'); } else { alert(data.message); if (data.err_code == "9999") { location.href = "/Home/Index"; } } }, error: function (jqXHR, textStatus, errorThrown) { alert('網路或伺服器發生錯誤,請稍後重試!'); } }); } } if (type == "edit") { $('#method').val('edit'); $('#kol_uid').val(uid); var formData = { method: "get", kol_uid: uid } $.ajax({ url: "/Api/kolAddEditDelGet", type: "post", data: formData, success: function (data, textStatus, jqXHR) { if (data.ret == "yes") { cleanModalData(); var obj = data.kol; $('#method').val('edit'); $('#kol_uid').val(uid); $('#kol_name').val(obj.kol_name).trigger('change'); $('#kol_descript').val(obj.kol_descript).trigger('change'); $('#kol_contact1').val(obj.kol_contact1).trigger('change'); $('#kol_contact2').val(obj.kol_contact2).trigger('change'); $('#kol_men_ratio').val(obj.kol_men_ratio).trigger('change'); $('#kol_women_ratio').val(obj.kol_women_ratio).trigger('change'); $('#kol_13_17').val(obj.kol_13_17).trigger('change'); $('#kol_18_24').val(obj.kol_18_24).trigger('change'); $('#kol_25_34').val(obj.kol_25_34).trigger('change'); $('#kol_35_44').val(obj.kol_35_44).trigger('change'); $('#kol_45_54').val(obj.kol_45_54).trigger('change'); $('#kol_55_64').val(obj.kol_55_64).trigger('change'); $('#kol_65').val(obj.kol_65).trigger('change'); $('#fileupload-avatar').parent().children('img').prop('src', obj.kol_photo); $.each(obj.makeups, function (key, value) { $("input:checkbox[value='" + value.optionItem_uid + "']").prop('checked', true); }); $.each(obj.styles, function (key, value) { $("input:checkbox[value='" + value.optionItem_uid + "']").prop('checked', true); }); $.each(obj.fansTypes, function (key, value) { $("input:checkbox[value='" + value.optionItem_uid + "']").prop('checked', true); }); $.each(obj.medias, function (key, value) { var trHtml = ""; trHtml += ''; trHtml += ' ' + value.optionItem_name + ' '; trHtml += ' ' + value.kolMedia_url + ' '; trHtml += ' ' + value.kolMedia_accountName + ' '; trHtml += ' ' + value.kolMedia_displayName + ' '; trHtml += ' ' + value.kolMedia_fansNum + ' '; trHtml += ' '; trHtml += ' '; trHtml += ' '; trHtml += ' '; trHtml += ''; $('#media_table tbody').append(trHtml); //$("input:checkbox[value='" + value.optionItem_uid + "']").prop('checked', true); }); var tagArray = []; var tagValArray = []; $.each(obj.tags, function (key, value) { var tagObj = {}; tagObj.id = value.tag_uid; tagObj.text = value.tag_text; tagArray.push(tagObj); tagValArray.push(value.tag_uid); var newOption = new Option(value.tag_text, value.tag_uid, true, true); $('#kol_tags').append(newOption).trigger('change'); }); //$('#kol_tags').select2('data').push(tagArray); //$('#kol_tags').select2('data', tagArray); //$('#kol_tags').val(tagValArray).trigger('change'); $('#clientNewModal').modal('toggle'); } else { alert(data.message); if (data.err_code == "9999") { location.href = "/Home/Index"; } } }, error: function (jqXHR, textStatus, errorThrown) { alert('網路或伺服器發生錯誤,請稍後重試!'); } }); } } function buttonClick(obj) { mediaTr = $(obj).closest('tr'); var dataMethod = obj.getAttribute('data-method'); var dataUid = obj.getAttribute('data-uid'); var mediaUid = obj.getAttribute('media-uid'); var kolMedia_url = mediaTr.find('td').eq(1).text().trim(); var kolMedia_accountName = mediaTr.find('td').eq(2).text().trim(); var kolMedia_displayName = mediaTr.find('td').eq(3).text().trim(); var kolMedia_fansNum = mediaTr.find('td').eq(4).text().trim(); if (dataMethod == 'edit') { $('#media_method').val('edit'); $('#option_uid').val('media'); $('#optionItem_uid').val(mediaUid); $('#kolMedia_uid').val(dataUid); $('#media_select').val(mediaUid); $('#kolMedia_url').val(kolMedia_url).trigger('change'); $('#kolMedia_accountName').val(kolMedia_accountName).trigger('change'); $('#kolMedia_displayName').val(kolMedia_displayName).trigger('change'); $('#kolMedia_fansNum').val(kolMedia_fansNum).trigger('change'); $('#socialItemModal').modal('toggle'); } if (dataMethod == "del") { if (confirm('確定刪除此筆資料?')) { var kolMedia_uid = mediaTr.find('td').eq(5).children('button').eq(0).attr('data-uid'); if (kolMedia_uid != "") { delMedia += kolMedia_uid + ","; } mediaTr.remove(); } } } function cleanModalData() { $("#method").val(""); $("#kol_uid").val(""); $("#kol_name").val(""); $("#kol_descript").val(""); $("input[type=checkbox]").each(function (index, checkbox) { checkbox.checked = false; }); $('#fileupload-avatar').parent().children('img').prop('src', '/assets/images/avatars/unknown-profile.jpg'); $("input[type=text][data-toggle=touchspin]").each(function (index, input) { if ($(input).prop("id") == "kol_men_ratio" || $(input).prop("id") == "kol_women_ratio") { $(input).val("50").trigger("change"); } else { $(input).val("0").trigger("change"); } }); var trList = $("#media_table").find("tbody").find("tr"); $.each(trList, function (index, item) { $(item).remove(); }); $('#kol_tags').empty(); $('#kol_tags').val(null).trigger('change'); } function loadMedia() { var formData = { option_uid: 'media' } $.ajax({ url: "/Api/optionItemList", type: "post", data: formData, success: function (data, textStatus, jqXHR) { if (data.ret == "yes") { var obj = data.optionItems; $.each(obj, function (i, item) { $("#media_select").append($("