(function () { //check the class name , it will be replaced when existed if (window.IQCBase) { //return window.IQCBase; //window._IQCBase = window.IQCBase; } //constructor window.IQCBase = function (param) { param = param instanceof Object ? param : {}; this.cfg = param.cfg || {}; $.fn.editable = function (config) { $(this).each(function (i, t) { $(t).change(function () { var me = $(this); var $select2 = null; me.find('.customerval').remove(); if (-999 == me.val()) { var ed = $("<input type=\"text\" />"); if (config) { $select2 = me.prev(config.className).hide(); } me.after(ed).hide(); ed.blur(function () { var v = ed.val(); if (null === v || v.length == 0) { ed.remove(); me.val(null).show(); } else { me.append("<option value=\"" + v + "\" class=\"customerval\" selected>" + v + "</option>").show(); ed.remove(); } if ($select2 && $select2.length > 0) { me.select2(); } }).focus(); } }); }); }; $.fn.dataTable.Api.register('table().fnAjaxLoadData()', function (config) { var table = this; var params = IQCBase.getQueryParams('#' + config.form, config.formPerfix).param; $.post(config.url, params, function (response) { if (response) { IQCBase.addRows(table, response.data, true); if (config.success) { config.success(response); } } }); }); } //share property & method var pt = IQCBase.prototype; pt.UEConfig = { toolbars: [['bold', 'justifyleft', 'justifyright', 'justifycenter', 'justifyjustify', 'inserttable', 'subscript', 'superscript', 'fontfamily']] }; pt.UEConfigDisable = { toolbars: [], wordCount: false, readonly: false }; pt.DateTimePickerCfg = { language: 'zh-CN', weekStart: 1, minView: 2, todayBtn: 1, autoclose: 1, todayHighlight: 1, startView: 2, forceParse: 1, showMeridian: 1 }; pt.DateTimePickerCfg2 = { language: 'zh-CN', weekStart: 1, minView: 0, todayBtn: 1, autoclose: 1, todayHighlight: 1, startView: 2, forceParse: 1, showMeridian: 1 }; //格式化日期 //expl: formatDate("2010-04-30", "yyyy-MM-dd HH:mm:ss") pt.formatDate = function formatDate(date, format) { if (!date) return; if (!format) format = "yyyy-MM-dd"; switch (typeof date) { case "string": date = new Date(date.replace(/-/, "/")); break; case "number": date = new Date(date); break; } if (!date instanceof Date) return; var dict = { "yyyy": date.getFullYear(), "M": date.getMonth() + 1, "d": date.getDate(), "H": date.getHours(), "m": date.getMinutes(), "s": date.getSeconds(), "MM": ("" + (date.getMonth() + 101)).substr(1), "dd": ("" + (date.getDate() + 100)).substr(1), "HH": ("" + (date.getHours() + 100)).substr(1), "mm": ("" + (date.getMinutes() + 100)).substr(1), "ss": ("" + (date.getSeconds() + 100)).substr(1) }; return format.replace(/(yyyy|MM?|dd?|HH?|ss?|mm?)/g, function () { return dict[arguments[0]]; }); } pt.format = function (format) { var args = pt.toArray(arguments, 1); return format.replace(/\{(\d+)\}/g, function (m, i) { return args[i]; }); }; pt.toArray = function (iterable, start, end) { if (!iterable || !iterable.length) { return []; } var array = [], i; start = start || 0; end = end ? ((end < 0) ? iterable.length + end : end) : iterable.length; for (i = start; i < end; i++) { array.push(iterable[i]); } return array; }; pt.htmlEncode = function (value) { var entities = { '&': '&', '>': '>', '<': '<', '"': '"' }, keys = [], p, regex; for (p in entities) { keys.push(p); } regex = new RegExp('(' + keys.join('|') + ')', 'g'); return (!value) ? value : String(value).replace(regex, function (match, capture) { return entities[capture]; }); }; pt.getDate = function (val) { var date = eval("new " + val.substr(1, val.length - 2)); return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds(); }; pt._radomNum = {}; pt.getRadomNum = function () { var b; while (true) { b = Math.random().toString().substr(2, 7) / 100; if (b.toString().length === 8 && pt._radomNum[b] === undefined) { return pt._radomNum[b] = b; } } }; pt.parseFloat = function (v) { var pre = parseFloat(v).toPrecision(14); return parseFloat(pre); }; pt.max = function (array) { var max = array[0], i, ln, item; for (i = 0, ln = array.length; i < ln; i++) { item = array[i]; if (item > max) { max = item; } } return max; }; pt.min = function (array) { var min = array[0], i, ln, item; for (i = 0, ln = array.length; i < ln; i++) { item = array[i]; if (item < min) { min = item; } } return min; }; pt.getMaxMin = function () { var max = pt.max(arguments), min = pt.min(arguments); return [max, min]; }; pt.supportsSort = (function () { var a = [1, 2, 3, 4, 5].sort(function () { return 0; }); return a[0] === 1 && a[1] === 2 && a[2] === 3 && a[3] === 4 && a[4] === 5; }()); pt.sort = function (array, sortFn) { var length = array.length, i = 0, comparison, j, min, tmp; for (; i < length; i++) { min = i; for (j = i + 1; j < length; j++) { if (sortFn) { comparison = sortFn(array[j], array[min]); if (comparison < 0) { min = j; } } else if (array[j] < array[min]) { min = j; } } if (min !== i) { tmp = array[i]; array[i] = array[min]; array[min] = tmp; } } return array; }; pt.avg = function () { var arr = arguments, len = arguments.length, sum = 0; for (var i = 0; i < len; i++) { if ($.isNumeric(arr[i])) { sum += parseFloat(arr[i]); } } return IQCBase.parseFloat(sum / 2); }; pt.isNull = function () { var arr = arguments, result = true; for (var i = 0; i < arr.length; i++) { var v = arr[i]; result &= pt.isEmpty(v); } return result; }; pt.isEmpty = function (value) { return (value === null) || (value === undefined) || (value === ''); }; pt.isNumeric = function () { var arr = arguments, result = true; for (var i = 0; i < arr.length; i++) { result &= $.isNumeric(arr[i]); } return result; }; pt.getUrlParam = function (name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; }; pt.leftPad = function (string, size, character) { var result = String(string); character = character || " "; while (result.length < size) { result = character + result; } return result; }; pt.now = function () { var date = new Date(); return date.getFullYear() + "-" + pt.leftPad(date.getMonth() + 1, 2, '0') + "-" + pt.leftPad(date.getDate(), 2, '0') + " " + pt.leftPad(date.getHours(), 2, '0') + ":" + pt.leftPad(date.getMinutes(), 2, '0') + ":" + pt.leftPad(date.getSeconds(), 2, '0'); }; pt.appendValue = function (obj, val, splitChar) { var spChar = splitChar || ','; var currentVal = obj.val(), currentArray = []; if (currentVal && currentVal.length > 0) currentArray = currentVal.split(','); if (currentVal.indexOf(val) == -1) currentArray.push(val); obj.val(currentArray.join(',')); }; pt.getDateFormat = function (value, rec) { return eval("new " + value.substr(1, value.length - 2)).toLocaleDateString(); }; //提示信息 pt.confirm = function (text, cb) { var initTemplate = function () { if ($('#IQCBase_ConfirmModal').length == 1) return true; $('body').append(' \ <div id="IQCBase_ConfirmModal" class="modal fade" data-backdrop="static" tabindex="-1" role="dialog" aria-hidden="true"> \ <div class="modal-dialog">\ <div class="modal-content">\ <div class="modal-header">\ <a class="close" id="close" data-dismiss="modal">×</a>\ <h3 class="modal-title">系统提示</h3>\ </div>\ <div class="modal-body">\ <p style="font-size:1.2em"></p>\ </div>\ <div class="modal-footer">\ <button class="btn btn-primary" data-dismiss="modal" aria-hidden="true" data-keyup="enter">确定</button> \ <button class="btn btn-danger" data-dismiss="modal" aria-hidden="true">取消</button> \ </div>\ </div>\ </div>\ </div>'); } var bootStrapConfirm = function () { if (!$.fn.modal.Constructor) return false; $('body').off('click', '#IQCBase_ConfirmModal .btn-primary'); $('body').off('click', '#IQCBase_ConfirmModal .btn-danger'); function confirm() { cb(true); } function deny() { cb(false); } $('body').on('click', '#IQCBase_ConfirmModal .btn-primary', confirm); $('body').on('click', '#IQCBase_ConfirmModal .btn-danger', deny); return true; } initTemplate() if (bootStrapConfirm()) { $('#IQCBase_ConfirmModal .modal-body p').text(text); $('#IQCBase_ConfirmModal').modal(); } else { alert('bootstrap was not found'); } }; pt.showMsg = function (content, title, cb) { if (!$.fn.modal.Constructor) { alert('bootstrap was not found'); return false; } var initTemplate = function () { if ($('#IQCBase_AlertModal').length == 1) return true; $('body').append(' \ <div id="IQCBase_AlertModal" class="modal fade" data-backdrop="static" tabindex="-1" role="dialog" aria-hidden="true">\ <div class="modal-dialog">\ <div class="modal-content">\ <div class="modal-header">\ <a class="close" id="close" data-dismiss="modal">×</a>\ <h3 class="modal-title">提示</h3>\ </div>\ <div class="modal-body">\ <p style="font-size:1.2em"></p>\ </div>\ <div class="modal-footer">\ <button class="btn btn-primary" data-keyup="enter" data-dismiss="modal">确认</button>\ </div>\ </div>\ </div>\ </div>'); } var bindCallBack = function () { $('body').off('click', '#IQCBase_AlertModal .btn-primary'); if (cb) { $('body').on('click', '#IQCBase_AlertModal .btn-primary', cb); } } initTemplate(); var modal = $('#IQCBase_AlertModal'); modal.find('.modal-body p').html(content); if (title) { modal.find('.modal-title').text(title); } if (cb) { var btn = modal.find('.btn-primary'); btn.on('click', cb); } modal.modal('show'); }; //datatables checkbox pt.checkAllItem = function (table, checked) { var tableID = table.settings()[0].sTableId; var args = arguments[2], checkedItems = $("#" + tableID+ ' input[name="checkvalue"]'), tableID = table.settings()[0].sTableId; if (args && args.length > 1) { checkedItems.each(function (i, o) { $(o)[0].checked = checked; var data = table.row(i).data(); if (checked == true) { pt.appendSelecteValue(tableID, data, args); } else { pt.removeSelecteValue(tableID, data, args); } }); } else { checkedItems.each(function (i, o) { $(o)[0].checked = checked; }); } }; pt.bindMultipleSelect = function (table) { var tableID = table.settings()[0].sTableId; var __table = $("#" + tableID); var checkAll = $(table.table().header()).find("input[name='checkAll']"); checkAll.click(function () { pt.checkAllItem(table, $(this)[0].checked); }); __table.on('click', 'tr', function (a) { var row = $(this); var checkBox = row.find("input[name='checkvalue']"), selected = row.hasClass('selected'); __table.find('tr.selected').removeClass('selected'); if (checkBox.length > 0) { if (a.target.name != 'checkvalue') { checkBox[0].checked = !checkBox[0].checked; } var isAll = __table.find('input[name="checkvalue"]:checked').length == __table.find("tr").length - 1; checkAll[0].checked = isAll; } if (!selected) { row.addClass('selected'); } }); }; pt.bindSingleSelect = function (table, modalID, id, val, desc) { var tableID = table.settings()[0].sTableId; $(table.table().body()).on('click', 'tr', function () { var row = $(this); var data = table.row(this.rowIndex - 1).data(); var checkBox = row.find("input[name='checkvalue']"); var selected = row.hasClass('selected'); if (checkBox.length > 0) { //pt.checkAllItem(table, false); checkBox[0].checked = !selected; } if (selected) { row.removeClass('selected'); pt.clearSelectorParams(tableID); } else { table.$('tr.selected').removeClass('selected'); row.addClass('selected'); pt.SELECTOR_ID[tableID] = data[id]; if (val) pt.SELECTOR_VAL[tableID] = data[val]; if (desc) pt.SELECTOR_DESC[tableID] = data[desc]; } }); $(table.table().body()).on('dblclick', 'tr', function () { var data = table.row(this.rowIndex - 1).data(); pt.SELECTOR_ID[tableID] = data[id]; if (val) pt.SELECTOR_VAL[tableID] = data[val]; if (desc) pt.SELECTOR_DESC[tableID] = data[desc]; var modal = $('#' + modalID); modal[0].title = 'OK'; modal.modal('hide'); }); }; pt.removeSelecteValue = function (tableID, data, args) { var replace1 = ',', replace2 = '#SP#', len = args.length; if (len > 1) { var val = data[args[1]]; if (val != 'null' && val != '') { pt.SELECTOR_ID[tableID] = pt.SELECTOR_ID[tableID].replace(replace1 + val + replace1, ''); } } if (len > 2) { var val = data[args[2]]; if (val != 'null' && val != '') { pt.SELECTOR_VAL[tableID] = pt.SELECTOR_VAL[tableID].replace(replace2 + data[args[2]] + replace2, ''); } } if (len > 3) { var val = data[args[3]]; if (val != 'null' && val != '') { pt.SELECTOR_DESC[tableID] = pt.SELECTOR_DESC[tableID].replace(replace2 + data[args[3]] + replace2, ''); } } }; pt.bindCheckNotUse = function (setting) { /// <summary>datatables checkbox 不适用</summary> var args = arguments; var table = setting.table; var btn = setting.btn; var p = setting.p; $(table.table().header()).on('click', 'input.checkboxes', function (o) { var checkedOfAll = this.checked; $(table.table().body()).find('input[name=checkvalue]:checkbox').prop('checked', checkedOfAll); var strChecked = checkedOfAll ? 'Y' : null; if (p) { $(table.table().data()).each(function (i, d) { if (d[p]) { d[p] = strChecked; table.row(i).data(d); } }); } if (btn) { $('#' + btn).prop('disabled', false); } }); $(table.table().body()).on("click", "input.checkboxes", function (o) { var $self = $(this); var $tHeader = $(table.table().header()); var $tBody = $(table.table().body()); if ($tBody.find('input[name=checkvalue]:checked').length == $tBody.find('input[name=checkvalue]').length) { $tHeader.find('input[name=checkAll]').prop('checked', true); } else { $tHeader.find('input[name=checkAll]').prop('checked', false); } var id = $self.data('id'); var strChecked = $self.prop('checked') ? 'Y' : null; if (p) { $(table.table().data()).each(function (i, d) { if (d[p]) { d[p] = strChecked; table.row(i).data(d); } }); } if (btn) { $('#' + btn).prop('disabled', false); } }); }; pt.getUrlParamsVal = function (name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substring(1).match(reg); if (r != null) return (r[2]); return null; }; pt.getUrlParams = function (urlParams) { /// <summary>将字符串反序列化对象 与jQuery.param 相反</summary> /// <param name="urlParams" type="string"> url参数 类似于 a=1&b=2这种</param> /// <returns type="object" /> var args = new Object(); var query = urlParams || location.search.substring(1); var pairs = query.split("&"); for (var i = 0; i < pairs.length; i++) { var pos = pairs[i].indexOf('='); if (pos === -1) continue; var argname = pairs[i].substring(0, pos); var value = pairs[i].substring(pos + 1); args[argname] = unescape(value); } return args; }; pt.getAttachmentLinkCell = function (row, params, text) { var link = '<a class="link" name="attachment" href="javascript:void(0)" data-row={0} data-params="{2}">{1}</a>'; return pt.format(link, row, text || '<i class="icon-file"></i> ', params); }; pt.bindAttachment = function (options) { /// <summary>datatables Attachment click</summary> var args = arguments; var table = options.table; $(table.table().body()).on('click', 'a[name=attachment]', function (e) { var $self = $(this); var rowIndex = $self.data('row'); var rowData = table.row(rowIndex).data(); var paramString = $self.data('params'); var params = pt.getUrlParams(paramString); var options = { 'modalID': 'attachment', 'params': params }; pt.showAttachmentModal(options); }); }; pt.showAttachmentModal = function (options) { /// <summary>Attachment modal</summary> var args = arguments; var modalID = (options.modalID || '') + '_modal'; var modalTitle = options.modalTitle || '附件上传'; var $modal = $('#' + modalID); var uploadID = modalID + '_uploader'; var uploadHiddenID = modalID + '_uploaderHidden'; var tableID = modalID + '_table'; var $table = $('#' + tableID); var initTemplate = function () { if ($modal.length > 0) { $modal.remove(); } var html = ' \ <div id="{0}" class="modal fade" data-backdrop="static" tabindex="-1" role="dialog" aria-hidden="true"> \ <div class="modal-dialog">\ <div class="modal-content">\ <div class="modal-header">\ <a class="close" id="close" data-dismiss="modal">×</a>\ <h3 class="modal-title">{1}</h3>\ </div>\ <div class="modal-body">\ <div class="message-box alert alert-danger" style="display:none"><ul></ul></div>\ <div class="panel panel-default" style="margin-bottom: 0px;">\ <div class="panel-body" style="padding:0px;overflow:auto;height:100%">\ <div class="form-inline">\ <div class="form-group"">\ <div class="col-md-12">\ <!-- /paras is here -->\ {5}\ <!-- /webUploader is here -->\ <div id="{2}"></div>\ <input type="hidden" name="{3}" id="{3}" />\ </div>\ </div>\ </div>\ <div class="table-responsive">\ <table id="{4}" class="table table-striped table-bordered table-hover dataTable tableh" cellspacing="0" style="overflow:auto;height:100%;"></table>\ </div>\ </div>\ </div>\ <div style="clear:both;"></div>\ </div>\ <div class="modal-footer">\ <button type="button" class="btn btn-danger" data-dismiss="modal" aria-hidden="true">关闭</button> \ </div>\ </div>\ </div>\ </div>'; var dyElement = ''; for (var i in options.params) { dyElement += pt.format('<input type="hidden" name="{0}" value="{1}" />', modalID + i, options.params[i]); } $('body').append(pt.format(html, modalID, modalTitle, uploadID, uploadHiddenID, tableID, dyElement)); }; initTemplate(); $modal = $('#' + modalID); // datatableAPI var table = IQCBase.initAutoDT({ queryPanel: $modal, queryObjectPerfix: modalID, tableID: tableID, target: 'FileService', scrollX: true, scrollY: '100%', columns: [ $.extend({}, IQCBase.checkColumn, { width: 15 }), $.extend(IQCBase.snColumn, { width: 25 }), { data: 'FILE_NAME', title: '文件名称', className: 'text-center', xtype: 'downFile', key: ['ID'] }, { data: 'FILE_SIZE', title: '文件大小', className: 'text-center', render: function (data, type, full, meta) { var display = WebUploader.Base.formatSize((data || 0) * 1024, '0', ['B', 'KB', 'MB']); return display; } }, { data: 'DATETIME_CREATED', title: '上传时间', className: 'text-center', xtype: 'cut', len: 24 }, { data: 'SOURCE_USER', title: '上传人', width: 50, className: 'text-center', xtype: 'cut', len: 8 } ], onDraw: function (e, settings, json) { $table.find('tbody tr').on('click', 'a[data-params]', function () { var lnk = $(this); var paramString = lnk.attr('data-params'), iRow = lnk.attr('data-row'); }); }, onInit: function () { } }); $modal.off("show.bs.modal").on("show.bs.modal", function (callback) { if ($.isFunction(options.onShow)) { var callback = options.onShow; callback(); } }); $modal.off("shown.bs.modal").on("shown.bs.modal", function (callback) { $('#' + uploadID).webUploader({ hiddenInputId: uploadHiddenID, PostbackHold: true, ShowDownload: false, showBtnDel: true, extParams: options.params, table: table, tableID: tableID }); IQCBase.bindMultipleSelect(table); table.ajax.url('/Common/FileService/GetFiles').load(); if ($.isFunction(options.onShown)) { var callback = options.onShown; callback(); } }); if ($.isFunction(options.onHide)) { $modal.off("hide.bs.modal").on("hide.bs.modal", options.onHide); } if ($.isFunction(options.onHidden)) { $modal.off("hidden.bs.modal").on("hidden.bs.modal", options.onHidden); } $modal.modal('show'); }; // get/set element value pt.setForm = function (parent, data, formParentPerfix, fieldPerfix) { fieldPerfix = fieldPerfix || 'txt'; $.each(data, function (key, val) { var obj = parent.find('[name="' + fieldPerfix + key + '"]'); if (obj && obj.length > 0) { if (obj.length == 1) { if (obj.is('input')) { obj.val(val); } else if (obj.is('select')) { obj.find("option[value='" + val + "']").prop("selected", true); } else if (obj.is('textarea')) { //is UEditor if (!obj.attr('data-notset')) { var objDisplay = obj.css("display"); if (objDisplay == 'none') { var _name = obj.attr('name'); var _prop = _name.replace('txt', ''); var editor = UE.getEditor(formParentPerfix + _name); if (editor) { editor.addListener("ready", function () { this.setContent(data[_prop]); this.removeListener("ready"); }); } } else { obj.val(val); } } } } else { obj.each(function (i, e) { if (!IQCBase.isEmpty(val) && val.indexOf($(e).val()) > -1) { $(e).prop('checked', 'checked'); } else { $(e).removeAttr('checked'); } }); } } }); }; pt.getQueryParams = function (parent, queryObjectPerfix, d, ableOrder) { var returnParam = { param: {}, paramIsNull: false }, formTextData = $(parent).find("[name^='" + queryObjectPerfix + "'][type!='checkbox'][type!='radio']"), formCheckData = $(parent).find("input[name^='" + queryObjectPerfix + "']:checked"); if (d) { if (!ableOrder) returnParam.param = { start: d.start, length: d.length }; else returnParam.param = { start: d.start, length: d.length, order: d.order, columns: d.columns }; } for (var i = 0; i < formTextData.length; i++) { var e = formTextData[i]; var val = $(e).val(); if (val) { returnParam.param[e.name.replace(queryObjectPerfix, '')] = val.toString(); returnParam.paramIsNull |= val.toString().length > 0; } } //处理Checkbox var checkboxNames = []; formCheckData.each(function (i, e) { var name = e.name.replace(queryObjectPerfix, ''); if (!returnParam.param[name]) { returnParam.param[name] = []; checkboxNames.push(name); } returnParam.param[name].push($(e).val()); }); $.each(checkboxNames, function (i, name) { returnParam.param[name] = returnParam.param[name].join(','); }); return returnParam; }; pt.getSubmitData = function (parent) { var param = {}; var formData = parent.find("input[type!='checkbox'][type!='radio'][name^='txt']"); for (var i = 0; i < formData.length; i++) { var e = formData[i]; var oe = $(e); var required = oe.attr('data-required'); if (required && oe.val().length < 1) { pt.showMsg(required); return null; } param[e.name.replace('txt', '')] = $(e).val(); } //处理Checkbox var formCheckData = parent.find("input[type='checkbox'][name^='txt']:checked"); var checkboxNames = []; formCheckData.each(function (i, e) { var name = e.name.replace('txt', ''); if (!param[name]) { param[name] = []; checkboxNames.push(name); } param[name].push($(e).val()); }); $.each(checkboxNames, function (i, name) { param[name] = param[name].join(','); }); //处理Radio var formRadioData = parent.find("input[type='radio'][name^='txt']:checked"); formRadioData.each(function (i, e) { var name = e.name.replace('txt', ''); param[name] = $(e).val(); }); //处理select var formSelectData = parent.find("select[name^='txt']"); for (var i = 0; i < formSelectData.length; i++) { var e = formSelectData[i]; var oe = $(e); var required = oe.attr('data-required'); if (required && oe.val().length < 1) { pt.showMsg(required); return null; } var name = e.name.replace('txt', ''); param[name] = $(e).val(); } //处理textarea var formTextareaData = parent.find("textarea[name^='txt']:not([data-notset])"); for (var i = 0; i < formTextareaData.length; i++) { var e = formTextareaData[i]; var oe = $(e); var required = oe.attr('data-required'); if (required && oe.val().length < 1) { pt.showMsg(required); return null; } param[e.name.replace('txt', '')] = $(e).val(); } //处理UEditor //var formTextareaData = parent.find("textarea[name^='txt'][data-notset]"); //for (var i = 0; i < formTextareaData.length; i++) { // var e = formTextareaData[i]; var oe = $(e); // console.log(e); // var required = oe.attr('data-required'); // if (required && oe.val().length < 1) { // pt.showMsg(required); // return null; // } // var name = e.name.replace('txt', ''); // param[name] = $(e).val(); //} return param; }; //datatables默认配置 pt.pageSelector = [[20, 50, 100], [20, 50, 100]]; pt.tablesDom = '<"top"f>rt<"bottom"pli><"clear">'; pt.tablesLanguage = { lengthMenu: " _MENU_ ", processing: "载入中", paginate: { previous: "前一页", next: "后一页", first: "首页", last: "尾页" }, zeroRecords: "没有内容", info: "共 <kbd>_TOTAL_</kbd> 条", infoEmpty: "没有检索出结果", infoFiltered: "" }; //值变更方法 pt.selectSetChangeEvent = function (thisObj, tableID, iRow, name) { result = thisObj.val(); if (!thisObj.is('input')) { result = thisObj.find("option:selected").val(); } var data = $('#' + tableID).DataTable().rows(iRow).data()[0]; data[name] = result; $('#' + tableID).dataTable().fnUpdate(data, iRow); }; pt.defaultSetChangeEvent = function (thisObj, tableID, iRow, name) { result = thisObj.val(); var data = $('#' + tableID).DataTable().rows(iRow).data()[0]; data[name] = result; $('#' + tableID).dataTable().fnUpdate(data, iRow); }; pt.changeEvent = { "INSPECTION_RESULT": function (thisObj, tableID, iRow, name) { pt.selectSetChangeEvent(thisObj, tableID, iRow, name); }, "PROCESSING_RESULT": function (thisObj, tableID, iRow, name) { pt.defaultSetChangeEvent(thisObj, tableID, iRow, name); }, "DUTY_DEPARTMENT": function (thisObj, tableID, iRow, name) { pt.defaultSetChangeEvent(thisObj, tableID, iRow, name); }, "FAIL_DESC": function (thisObj, tableID, iRow, name) { pt.defaultSetChangeEvent(thisObj, tableID, iRow, name); } }; //注册表格控件值变更事件 需要控件加入data-name,data-row属性,data-name属性值为pt.changeEvent中的function name //colNames为监控的字段,Array类型,可null //callBackFun回调方法,可null pt.registerTableChange = function (tableID, colNames, callBackFun) { var objects = $('#' + tableID + ' tbody tr [data-name]'); objects.off('change'); objects.on('change', function () { var thisObj = $(this); var name = thisObj.attr('data-name'), iRow = parseInt(thisObj.attr('data-row')); var func = pt.changeEvent[name]; if (func) { func(thisObj, tableID, iRow, name); } else if(colNames && $.inArray(name,colNames)>-1) { if(this.nodeName=="INPUT" && this.type!="checkbox") pt.defaultSetChangeEvent(thisObj, tableID, iRow, name); else if(this.nodeName=="SELECT") pt.selectSetChangeEvent(thisObj, tableID, iRow, name); } if (callBackFun) callBackFun(this); }); }; //删除datatables数据 pt.deleteChecked = function (table, url, keys, msgTarget) { var checkboxes = table.$("input[name='checkvalue']"); if (table.$("input[name='checkvalue']:checked").size() == 0) { pt.showMsg("未选中行,请至少选中一行记录。"); } else { pt.confirm("你确定要删除选中记录吗?", function (ok) { if (ok) { pt.confirmDelete(table, url, keys, checkboxes, msgTarget); } }); } }; pt.confirmDelete = function (table, url, keys, checkboxes, msgTarget) { msgTarget = msgTarget || 'data'; var paramsArray = {}; checkboxes.each(function (i, o) { if (o.checked == true) { var data = table.data()[i]; $.each(keys, function (k, v) { if (!paramsArray[v]) paramsArray[v] = []; paramsArray[v].push(data[v]); }); } }); if (!$.isEmptyObject(paramsArray)) { var params = {} $.each(paramsArray, function (k, v) { params[k] = paramsArray[k].join(','); }); $.post(url, params, function (response) { if (response.success) { //$('#IQCBase_ConfirmModal').modal('hide'); table.ajax.reload(); } else { pt.showMsg(response[msgTarget] && response[msgTarget].length == 0 ? "删除失败" : response[msgTarget]); } }, "json"); } }; //params: url, modalID, paramString, onShown, onHidden pt.showDetail = function (config) { $('body').modalmanager('loading'); var modal = $("#" + config.id); if (modal.length < 1) { $('body').append('<div id="' + config.id + '" class="modal fade" data-backdrop="static" tabindex="-1" role="dialog" aria-labelledby="add-role-title" aria-hidden="true"></div>'); } modal.load(config.url, config.paramString || '', function () { if ($.isFunction(config.onShow)) { modal.off("show.bs.modal"); modal.on("show.bs.modal", config.onShow); } if ($.isFunction(config.onShown)) { modal.off("shown.bs.modal"); modal.on("shown.bs.modal", config.onShown); } if ($.isFunction(config.onHide)) { modal.off("hide.bs.modal"); modal.on("hide.bs.modal", config.onHide); } if ($.isFunction(config.onHidden)) { modal.off("hidden.bs.modal"); modal.on("hidden.bs.modal", config.onHidden); } modal.modal('show'); }); }; //注册datatables超链接的点击事件 pt.registerLinkClick = function (tableID, detailID, url) { $('#' + tableID + ' tbody tr a[data-params]').on('click', '', function () { var lnk = $(this); pt.showDetail({ id: detailID, url: url, paramString: lnk.attr('data-params'), onHidden: function (event) { $(this).removeData('bs.modal').empty(); } }); }); }; pt.columns = {}; //初始化自动加载数据的datatables pt.initAutoDT = function (config) { var areaName = config.areaName || 'IQC'; var url = "/" + areaName + "/" + config.target + "/QueryNullable"; var detailUrl = config.detailUrl || "/" + areaName + "/" + config.target + "/Detail"; var processing = config.pagingType != undefined ? config.pagingType : true, tableID = config.tableID || config.perfix + 'tbData'; scrollY = '' + ($(window).height() - $(config.queryPanel).outerHeight() - 244); var tbObj = $('#' + tableID); if (config.onInit) { tbObj.on('init.dt', config.onInit); } if (config.onDraw) { tbObj.on('draw.dt', config.onDraw); } if (config.onXHR) { tbObj.on('xhr.dt', config.onXHR); } else if (config.autoBindLink === true) { tbObj.on('draw.dt', function () { pt.registerLinkClick(tableID, config.perfix + 'DetailDialog', detailUrl); }); } pt.columns[tableID] = config.columns; var table = tbObj.DataTable({ //lengthChange: false, //xcol: config.columns, autoWidth: false, pagingType: config.pagingType || "full_numbers", searching: false, serverSide: true, processing: processing, scrollX: config.scrollX || true, scrollY: config.scrollY || scrollY, scrollCollapse: false, lengthMenu: IQCBase.pageSelector, pageLength: config.pageLength || 20, order: config.order || [], ordering: config.orderable || false, retrieve: true, dom: IQCBase.tablesDom, ajax: { type: "post", url: config.url || url, cache: false, dataSrc: "data", beforeSend: function (r) { if (!config.autoLoad) { IQCBase.ajaxBeforeSend(this, tableID, r); } }, error: IQCBase.ajaxError, complete: function () { IQCBase.ajaxComplete(tableID); }, data: function (d) { debugger; return IQCBase.getQueryParams(config.queryPanel, config.queryObjectPerfix, d, config.orderable).param; } }, columns: pt.getColumns(config.columns, detailUrl, config.perfix), language: config.language || IQCBase.tablesLanguage }); return table; }; //初始化手动加载数据的datatables pt.initManualDT = function (config) { var tableID = config.tableID || config.perfix + 'tbData'; pt.columns[tableID] = config.columns; var tbObj = $('#' + tableID), scrollY = config.scrollY ? config.scrollY : ''; if (config.onInit) { tbObj.on('init.dt', config.onInit); } if (config.onDraw) { tbObj.on('draw.dt', config.onDraw); } var table = tbObj.DataTable({ //autoWidth: true, //pagingType: config.pagingType || "full_numbers", //serverSide: true, //lengthMenu: IQCBase.pageSelector, //pageLength: config.pageLength || 10, //retrieve: true, //dom: IQCBase.tablesDom, dom: '<"top"f>rt<"bottom"pli><"clear">', paging: false, searching: false, retrieve: true, processing: config.processing || true, scrollX: config.scrollX || false, scrollY: scrollY, order: config.order || [], ordering: config.orderable || false, columns: pt.getColumns(config.columns, config.detailUrl, config.perfix), language: config.language || IQCBase.tablesLanguage }); return table; }; //datatables add rows pt.addRows = function (table, datas, clear) { if (clear) { table.rows().remove(); } $.each(datas, function (i, o) { table.row.add(o); }); table.draw(); }; //datatables checkbox column pt.parseCheckAll = function (v) { return '<input name="checkAll" type="checkbox" class="checkboxes" />'; }; pt.parseCheck = function (v, type, full, meta) { return '<input name="checkvalue" type="checkbox" class="checkboxes" data-row="' + meta.row + '" data-id="' + v.ID + '" />'; }; pt.parseRadio = function (v) { return '<input name="checkvalue" type="radio" class="radio" />'; }; pt.checkColumn = { width: 20, className: 'text-center', orderable: false, data: pt.parseCheck, title: pt.parseCheckAll }; pt.radioColumn = { width: 20, className: 'text-center', orderable: false, data: pt.parseRadio }; //datatables checkbox column values pt.parseCheckValues = function (v, type, full, meta) { return '<input name="checkvalue" type="checkbox" class="checkboxes" data-row="' + meta.row + '"value="' + v.ID + '" />'; }; pt.checkColumnValues = { width: 20, className: 'text-center', orderable: false, data: pt.parseCheckValues, title: pt.parseCheckAll }; //datatables 序号列 pt.snColumn = { title: '序号', className: 'text-center', orderable: false, data: function (data, type, full, meta) { return meta.row + 1; } }; //datatables htmlEncode column pt.getHtmlColumn = function (column) { return { title: column.title, data: function (e) { return IQCBase.htmlEncode(e[column.data]); } }; }, //datatables link column pt.getLinkTabColumn = function (col) { var colName = col.data; var obj = { title: col.title, className: 'text-center', data: function (d) { var paramString = '', key = col.key, params = {}; $.each(key, function (i, v) { params[v] = d[v]; }); paramString = $.param(params).replace(/&/g, '&'); var lnk = '<a target="navTab" rel="{4}" title="{3}" href="{1}?{2}">{0}</a>'; var rel = col.rel || 'this'; var tabTitle = IQCBase.format(col.tabTitle, d[colName]); return IQCBase.format(lnk, d[colName], col.url, paramString, tabTitle, col.rel); } }; return obj; }; pt.getLinkColumn = function (col) { var colName = col.data; var obj = { title: col.title, className: 'text-center', data: function (d, type, full, meta) { var paramString = '', key = col.key, params = {}; $.each(key, function (i, v) { params[v] = d[v]; }); paramString = $.param(params).replace(/&/g, '&'); return IQCBase.getLinkCell(paramString, d[colName], meta.row); } }; return obj; }; pt.getLinkCell = function (paramString, text, row) { var rowIndex = row ? row : '-1'; var lnk = '<a href="javascript:void(0)" data-row={2} data-params="{0}">{1}</a>'; return pt.format(lnk, paramString, text, row); }; //datatables color column pt.getColorCol = function (col) { return { title: col.title, className: 'text-center', data: function (e) { return '<span style="color:' + col.color + '">' + e[col.data] + '</span>'; } }; }; //datatables 显示是或否 pt.getEnableCol = function (col) { return { title: col.title, className: 'text-center', data: function (d) { return d[col.data] == 2 ? "是" : "否"; } }; }; //datatables cut string column pt.getLenCol = function (col) { return { title: col.title, className: col.className, data: function (d) { var val = d[col.data]; if (!val) return val; var len = col.len; var parseHtmlVal = IQCBase.removeHtml(val); var cut = ''; if (parseHtmlVal.length > 0 && parseHtmlVal.length > len) { cut = parseHtmlVal.substr(0, len) + '...'; } else { cut = parseHtmlVal; } return '<span title="' + parseHtmlVal + '">' + cut + '</span>'; } }; }; pt.getStanrdLenCol = function (col) { return { orderable: col.orderable || false, title: col.title, name: col.name, className: 'text-center', data: function (d) { var val = d[col.data]; var title = col.titleValue ? col.titleValue : null; if (!val && !title) return val; var cut = val && val.length > 0 && val.length > col.len ? val.substr(0, col.len) : val; if (typeof title == 'function') { var text = d[col.data]; var split = col.splitStr || ','; if (text && text.length > 0) { var lt = text.replace(new RegExp(split, 'gi'), ","); lt = lt.length > col.len ? lt.substr(0, col.len) : lt; return '<span title="' + title(d) + '">' + lt + '...</span>'; } else { return ''; } } else if (val && val.length > 0 && val.length > col.len) { return '<span title="' + (d[title] || val) + '">' + cut + '...</span>'; } else { return '<span title="' + (d[title] || val) + '">' + cut + '</span>'; } } }; }; //datatables replace html span column pt.removeHtml = function (val) { var v = '<p>' + val + '</p>'; return $(v).text(); }; pt.getHtmlLenCol = function (col) { return { title: col.title, data: function (d) { var val = d[col.data]; if (!val) return val; var noHtmlVal = pt.removeHtml(val); var cut = noHtmlVal.length > 0 && noHtmlVal.length > col.len ? noHtmlVal.substr(0, col.len) : noHtmlVal; return '<span title="' + noHtmlVal + '">' + cut + '...</span>'; } }; }; //datatables 技术要求 pt.parseTech = function (d, type, full, meta) { var result = pt.getTechRange(d, true), len = 25, val = d.TECH_REQUIREMENT; if (!val) return result; var parseHtmlVal = IQCBase.removeHtml(val); var cut = '', hasMore = val.indexOf('<table>') > -1; if (parseHtmlVal.length > 0 && parseHtmlVal.length > len) { hasMore = true; cut = parseHtmlVal.substr(0, len); } else { cut = parseHtmlVal; } result = parseHtmlVal + ' ' + result; if (hasMore) { cut += '...'; } return "<span title='" + result + "' data-tech='" + meta.row + "'>" + cut + "</span>"; }; //onclick='$.messager.alert('计数要求','" + parseHtmlVal + "')' pt.getTechCol = function (col) { return { title: col.title, className: col.className, data: pt.parseTech }; }; //datatables 检验结果 pt.insprOutOfRange = function (o) { var hasDefect = false, currentValue = parseFloat(o.INSPECTION_RESULT), max = o.OFFSET_VALUE_UP, min = o.OFFSET_VALUE_LOW; if (IQCBase.isNumeric(max, min)) { max = parseFloat(max); min = parseFloat(min); var sort = IQCBase.sort([min, max]); hasDefect = currentValue > sort[1] || currentValue < sort[0]; } else if ($.isNumeric(max) && !$.isNumeric(min)) { max = parseFloat(max); hasDefect = currentValue > max } else if ($.isNumeric(min) && !$.isNumeric(max)) { min = parseFloat(min); hasDefect = currentValue < min; } return hasDefect; }; pt.getISPRCol = function (col) { return { title: col.title, data: function (d, type, full, meta) { var result, currentValue = d.INSPECTION_RESULT; if (d.FEATURES == '计量') { var input = '<input type="text" data-row="{5}" data-name="{0}" data-up="{1}" name="abc" data-low="{2}" value="{3}" title="如该项为不适用项目,请输入\'-\'标识" style="width:50px"{4} {6} />'; var max = d.OFFSET_VALUE_UP, min = d.OFFSET_VALUE_LOW, color = ''; if ($.isNumeric(currentValue)) { currentValue = parseFloat(currentValue); color = IQCBase.insprOutOfRange(d) ? ' class="input-danger"' : ''; } else if (currentValue == '-') { currentValue = currentValue; } else { currentValue = ''; } result = IQCBase.format(input, 'INSPECTION_RESULT', max, min, currentValue, color, meta.row, col.insDisabled); } else { var select = '<select name="abc" data-name="{0}" data-row="{4}" {5}>\ <option value="OK"{1}>OK</option>\ <option value="NG"{2}>NG</option>\ <option value="N/A"{3}>N/A</option>\ </select>'; var selectedObj = { OK: '', NG: '', "N/A": '' }; if (currentValue) { selectedObj[currentValue] = ' selected="selected"'; } else { selectedObj['OK'] = ' selected="selected"'; } result = IQCBase.format(select, 'INSPECTION_RESULT', selectedObj.OK, selectedObj.NG, selectedObj["N/A"], meta.row, col.insDisabled); } return result; } }; }; pt.getDownFileCol = function (col) { var colName = col.data; var obj = { title: col.title, className: col.className, data: function (d, type, full, meta) { var paramString = '', key = col.key, params = {}; $.each(key, function (i, v) { params[v] = d[v]; }); paramString = $.param(params).replace(/&/g, '&'); var display = '<a href="/Common/FileService/DownLoadFile?id=' + d.ID + '">' + d[colName] + '</a>'; return display; } }; return obj; }; //get all columns pt.getColumns = function (cols, detailUrl, perfix) { var dataTablesColumns = []; for (var i = 0; i < cols.length; i++) { var col = cols[i]; switch (col.xtype) { case 'linkTab': dataTablesColumns.push(pt.getLinkTabColumn(col)); break; case 'link': dataTablesColumns.push(pt.getLinkColumn(col)); break; case 'enable': dataTablesColumns.push(pt.getEnableCol(col)); break; case 'htmlencode': dataTablesColumns.push(pt.getHtmlColumn(col)); break; case 'color': dataTablesColumns.push(pt.getColorCol(col, col.color)); break; case 'cut': dataTablesColumns.push(pt.getLenCol(col)); break; case 'cutStanrd': dataTablesColumns.push(pt.getStanrdLenCol(col)); break; case 'htmlcut': dataTablesColumns.push(pt.getHtmlLenCol(col)); break; case 'tech': dataTablesColumns.push(pt.getTechCol(col)); break; case 'ISPR': dataTablesColumns.push(pt.getISPRCol(col)); break; case 'downFile': dataTablesColumns.push(pt.getDownFileCol(col)); break; default: dataTablesColumns.push(col); } } return dataTablesColumns; }; //处理datatables绑定ajax时首次必须加载的问题 pt.ajaxBeforeSend = function (o, tableID, XMLHttpRequest) { if (o.url.indexOf('QueryNullable') > -1) { XMLHttpRequest.abort(); $('#' + tableID + '_processing').hide(); } }; pt.ajaxError = function (o) { if (o.responseText.indexOf("程序发生了错误,请报告给管理员.") != -1) IQCBase.showMsg(o.responseText); else IQCBase.showMsg('服务器错误'); }; pt.ajaxComplete = function (tableID, area, controller, perfix) { $('#' + tableID + '_processing').hide(); var table = $('#' + tableID).DataTable().table(); var check = $(table.header()).find('input[name="checkAll"]'); if (check.length > 0) check[0].checked = false; var linkItems = table.$('a[name="linkCell"]').on('click', function () { $('body').modalmanager('loading'); var modal = $('#' + perfix + 'DetailDialog'); modal.load('/' + area + '/' + controller + '/Detail', paramString, function () { modal.modal(); }); }); }; //绑定页面Enter键事件 pt.bindKeyup = function () { var args = arguments; $(document).keyup(function (e) { if (e.which == 13) { var btn = $("[data-keyup='enter']:visible"); if (btn.length > 0) { btn.last().click(); } } }); }; pt.registerTechClick = function (perfix) { var techObjects = $('#' + perfix + 'tbData tbody tr span[data-tech]'); techObjects.on('click', function () { var rowIndex = $(this).attr('data-tech'); var data = $('#' + perfix + 'tbData').DataTable().rows(rowIndex).data()[0]; if (data) { var techData = data.TECH_REQUIREMENT; if (techData && techData.length > 0 && techData.indexOf('<table>') > -1) { IQCBase.showTech(perfix + 'TechModal', perfix + 'TechField', data); } } }); }; //技术要求弹出框 pt.showTech = function (modelID, fieldID, data) { var initTemplate = function () { if ($('#' + modelID).length > 0) { $('#' + modelID).remove(); } var html = ' \ <div id="{0}" class="modal fade" data-backdrop="static" tabindex="-1" role="dialog" aria-hidden="true"> \ <div class="modal-dialog">\ <div class="modal-content">\ <div class="modal-header">\ <a class="close" id="close" data-dismiss="modal">×</a>\ <h3 class="modal-title">详细技术要求</h3>\ </div>\ <div class="modal-body">\ <script id="{1}" type="text/plain"></script>\ </div>\ <div class="modal-footer">\ <button class="btn btn-danger" data-dismiss="modal" aria-hidden="true">关闭</button> \ </div>\ </div>\ </div>\ </div>'; $('body').append(pt.format(html, modelID, fieldID)); }; initTemplate(); var modal = $('#' + modelID); modal.off("shown.bs.modal"); modal.off("hidden.bs.modal"); modal.on("shown.bs.modal", function () { var editor = UE.getEditor(fieldID, pt.UEConfigDisable); if (editor) { var techData = data.TECH_REQUIREMENT; editor.addListener("ready", function () { if (data.FEATURES == '计量') { techData += IQCBase.getTechRange(data); } this.setContent(techData); this.removeListener("ready"); }); } }); modal.on("hidden.bs.modal", function () { var editor = UE.getEditor(fieldID); if (editor) { editor.destroy(); editor = null; } }); modal.modal(); }; //获取技术要求追加的计量范围 pt.getTechRange = function (d, noHtml) { var result = ''; if (IQCBase.isNumeric(d.OFFSET_VALUE_UP, d.OFFSET_VALUE_LOW)) { var arr = [parseFloat(d.OFFSET_VALUE_UP), parseFloat(d.OFFSET_VALUE_LOW)]; var arrSort = IQCBase.sort(arr); result = arrSort[0] + '~' + arrSort[1]; } else if ($.isNumeric(d.OFFSET_VALUE_UP) && !$.isNumeric(d.OFFSET_VALUE_LOW)) { result = '≤' + d.OFFSET_VALUE_UP; } else if ($.isNumeric(d.OFFSET_VALUE_LOW) && !$.isNumeric(d.OFFSET_VALUE_UP)) { result = '≥' + d.OFFSET_VALUE_LOW; } if (!noHtml) { result = '<p>' + result + '</p>'; } return result; }; pt.INSDetailOnShown = function (editorID, tableID, perfix, iRow, editorDisabled) { var result = '', editor = UE.getEditor(editorID, pt.UEConfig); var childPage = $('#' + perfix + 'DetailForm'); var oData = $('#' + tableID).DataTable().rows(iRow).data(); childPage.find('[name="qrEdit"]').val('1'); if (oData && oData.length > 0) { var data = oData[0]; var itemTypeSelect = childPage.find('[name="txtITEM_TYPE"]'); if (itemTypeSelect.children('option[value="' + data.ITEM_TYPE + '"]').length == 0) { var option = '<option value="{0}">{0}</option>'; itemTypeSelect.append(pt.format(option, data.ITEM_TYPE)); } pt.setForm(childPage, data, perfix); childPage.find('[name="txtSEQ"]').val(data.SEQ); childPage.find('[name="txtITEM_NAME_OLD"]').val(data.ITEM_NAME); childPage.find('[name="txtITEM_TYPE_OLD"]').val(data.ITEM_TYPE); childPage.find('[name="txtCHECK_TYPE_OLD"]').val(data.CHECK_TYPE); childPage.find('[name="txtSTANDARD_VALUE"][value="' + data.STANDARD_VALUE + '"]').prop("checked", true); childPage.find('[name="txtFIX_NUM"]').val(data.FIX_NUM); childPage.find('[name="txtAC_VALUE"]').val(data.AC_VALUE); childPage.find('[name="txtRE_VALUE"]').val(data.RE_VALUE); childPage.find('[name="txtSTANDARD_VALUE"][value="' + data.INSPECTION_LEVEL + '"]').prop("checked", true); var selector = '[name="txtOFFSET_VALUE_LOW"],[name="txtOFFSET_VALUE_UP"],[name="txtUNIT"]'; var $spanTech = childPage.find('span.tech-must'); if (data.FEATURES == '计量') { $spanTech.show(); //childPage.find(selector).removeAttr('disabled'); result = IQCBase.getTechRange(data); childPage.find('[name="qrTechReplace"]').val(result); if (editorDisabled) { if (childPage.find('[name="txtOFFSET_VALUE_LOW"]').val() != "") { childPage.find('[name="txtOFFSET_VALUE_LOW"]').prop('disabled', true); } if (childPage.find('[name="txtOFFSET_VALUE_UP"]').val() != "") { childPage.find('[name="txtOFFSET_VALUE_UP"]').prop('disabled', true); } } } else { //if (editorDisabled) { // if (childPage.find('[name="txtOFFSET_VALUE_LOW"]').val() != "") { childPage.find('[name="txtOFFSET_VALUE_LOW"]').prop('disabled', true); } // if (childPage.find('[name="txtOFFSET_VALUE_UP"]').val() != "") { childPage.find('[name="txtOFFSET_VALUE_UP"]').prop('disabled', true); } //} childPage.find(selector).prop('disabled', true); $spanTech.hide(); } if (editor) { editor.addListener("ready", function () { if (data.TECH_REQUIREMENT) { result = data.TECH_REQUIREMENT + result; } this.setContent(result); //if (editorDisabled) { // this.setDisabled(); //} this.removeListener("ready"); }); } } }; //导出Excel pt.getExportCols = function (tableID) { var columns = pt.columns[tableID]; var arrKeyValue = []; for (var i = 0; i < columns.length; i++) { if (!columns[i].noExport) { var col = columns[i]; if (typeof (col.data) == 'string') { arrKeyValue.push(col.data + ',' + col.title); } else if (typeof (col.name) == 'string') { arrKeyValue.push(col.name + ',' + col.title); } } } return arrKeyValue.join('$'); }; pt.downloadExcel = function (param, url) { if ($('#iframeExport').length < 1) { if (document.domain && document.domain != "") { var ifr = document.createElement("iframe"); ifr.id = "iframeExport"; ifr.src = "javascript:void((function(){var d=document;d.open();d.domain='" + document.domain + "';d.write('');d.close()})())"; ifr.style.display = "none"; document.body.appendChild(ifr); } else $('body').append('<iframe id="iframeExport" style="display:none;"></iframe>'); } //var $iframe = $('<iframe id="iframeExport" name="iframeExport" style="display:none;"></iframe>'); //if ($('#iframeExport').length < 1) { // $('body').append($iframe); //} setTimeout(function () { var form = $('<form name="exportForm" id="exportForm" action="' + url + '" method="post"></form>'); $.each(param, function (i, val) { if (val instanceof Array) { $.each(val, function (j, v) { $.each(v, function (k, kv) { form.append('<input type="hidden" name="' + i + '[' + j + '][' + k + ']" value="' + kv + '" />'); }); }); } else if (val.length > 0) { form.append('<input type="hidden" name="' + i + '" value="' + val + '" />'); } }); var body = $($('#iframeExport')[0].contentWindow.document.body); if (body.length < 1) { $iframe.load(function () { //fix IE9 before issue body = $($('#iframeExport')[0].contentWindow.document.body); body.html(form[0].outerHTML); body.find('#exportForm').submit(); }); } else { body.html(form[0].outerHTML); body.find('#exportForm').submit(); } }, 200); }; pt.onConfirmExport = function (table, url, queryPanel, queryObjectPerfix, ableOrder) { debugger; var param = table.ajax.params(); var params = IQCBase.getQueryParams(queryPanel, queryObjectPerfix, param, ableOrder); params.param['headers'] = IQCBase.getExportCols(table.settings()[0].sTableId); IQCBase.downloadExcel(params.param, url); }; pt.iFrameOnload = function (iframe) { if (iframe.attachEvent) { iframe.attachEvent("onload", function () { alert("Local iframe is now loaded."); }); } else { iframe.onload = function () { alert("Local iframe is now loaded."); }; } }; pt.exportExcel = function (table, url, queryPanel, queryObjectPerfix) { var initTemplate = function () { if ($('#iframeExport').length < 1) { if (document.domain && document.domain != "") { var ifr = document.createElement("iframe"); ifr.id = "iframeExport"; ifr.src = "javascript:void((function(){var d=document;d.open();d.domain='" + document.domain + "';d.write('');d.close()})())"; ifr.style.display = "none"; document.body.appendChild(ifr); } else $('body').append('<iframe id="iframeExport" style="display:none;"></iframe>'); } if ($('#ExportExcelDialog').length < 1) { $('body').append('<iframe id="iframeExport" style="display:none;"></iframe>\ <div id="ExportExcelDialog" class="modal fade" data-backdrop="static" tabindex="-1" role="dialog" aria-hidden="false">\ <div class="modal-dialog">\ <div class="modal-content">\ <div class="modal-header">提示</div>\ <div class="modal-body">\ <p>是否要导出Excel</p>\ </div>\ <div class="modal-footer text-right">\ <button class="btn btn-primary" data-dismiss="modal" data-keyup="enter">导出Excel</button>\ <button class="btn-danger" data-dismiss="modal">取消</button>\ </div>\ </div>\ </div>\ </div>'); } } var bootStrapConfirm = function () { if (!$.fn.modal.Constructor) return false; $('body').off('click', '#ExportExcelDialog .btn-primary'); function confirm() { var params = IQCBase.getQueryParams(queryPanel, queryObjectPerfix, table.ajax.params()); params.param['headers'] = IQCBase.getExportCols(table.settings()[0].sTableId); IQCBase.downloadExcel(params.param, url); } $('body').on('click', '#ExportExcelDialog .btn-primary', confirm); return true; } initTemplate(); if (bootStrapConfirm()) { $('#ExportExcelDialog').modal(); } else { alert('bootstrap was not found'); } }; })(); window.IQCBase = new IQCBase(); //20160513