| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
- var SMS_EDIT_AREA = ['960px', '580px'];
- var Controller = {
- index: function () {
- Table.api.init({
- extend: {
- index_url: 'procuremensms/index' + location.search,
- edit_url: 'procuremensms/edit',
- table: 'purchase_sms_template',
- }
- });
- var table = $("#table");
- var colCenter = {align: 'center', halign: 'center', valign: 'middle'};
- var columns = [
- {checkbox: true, align: 'center', halign: 'center', valign: 'middle', width: 42},
- $.extend({field: 'id', title: '序号', width: 60, operate: false}, colCenter),
- $.extend({field: 'title', title: '模版名称', operate: 'LIKE', width: 160}, colCenter),
- $.extend({
- field: 'content',
- title: '模版正文',
- operate: 'LIKE',
- width: 420,
- align: 'left',
- halign: 'center',
- valign: 'middle',
- class: 'col-sms-content',
- formatter: function (value) {
- if (value == null || value === '') {
- return '';
- }
- return '<div class="sms-content-cell">' + $('<div/>').text(String(value)).html() + '</div>';
- }
- }, {}),
- $.extend({
- field: 'status',
- title: __('Status'),
- width: 90,
- operate: '=',
- searchList: {'1': '正常', '0': '禁用'},
- formatter: function (value) {
- var v = String(value);
- if (v === '1' || v === 'normal') {
- return '<span class="text-success"><i class="fa fa-circle"></i> 正常</span>';
- }
- return '<span class="text-muted"><i class="fa fa-circle"></i> 禁用</span>';
- }
- }, colCenter),
- $.extend({
- field: 'updatetime',
- title: __('Updatetime'),
- width: 170,
- operate: 'RANGE',
- addclass: 'datetimerange',
- autocomplete: false,
- formatter: function (value) {
- if (value == null || value === '') {
- return '';
- }
- var s = String(value);
- if (/^\d{4}-\d{2}-\d{2}/.test(s)) {
- return s.length >= 19 ? s.substr(0, 19) : s;
- }
- return Table.api.formatter.datetime.call(this, value);
- }
- }, colCenter)
- ];
- function smsGetColWidths() {
- var widths = [];
- $.each(columns, function (_, col) {
- if (!col || col.visible === false) {
- return;
- }
- var w = parseInt(col.width, 10);
- widths.push((!w || isNaN(w)) ? (col.checkbox ? 42 : 120) : w);
- });
- return widths;
- }
- function smsApplyColgroup($tbl, widths) {
- if (!$tbl || !$tbl.length || !widths.length) {
- return;
- }
- var total = 0;
- var i;
- for (i = 0; i < widths.length; i++) {
- total += widths[i];
- }
- $tbl.css({
- tableLayout: 'fixed',
- width: total + 'px',
- minWidth: '100%'
- });
- var $cg = $tbl.children('colgroup');
- if (!$cg.length) {
- $cg = $('<colgroup/>').prependTo($tbl);
- }
- $cg.empty();
- for (i = 0; i < widths.length; i++) {
- $cg.append($('<col/>').attr('style', 'width:' + widths[i] + 'px;min-width:' + widths[i] + 'px;'));
- }
- $tbl.find('thead tr:first > th').each(function (idx) {
- if (idx >= widths.length) {
- return;
- }
- var w = widths[idx];
- $(this).css({width: w + 'px', minWidth: w + 'px', maxWidth: w + 'px'});
- $(this).find('.fht-cell').css({width: w + 'px', minWidth: w + 'px', maxWidth: w + 'px'});
- });
- $tbl.find('tbody tr:first-child:not(.no-records-found) > *').each(function (idx) {
- if (idx >= widths.length) {
- return;
- }
- var w = widths[idx];
- $(this).css({width: w + 'px', minWidth: w + 'px', maxWidth: w + 'px'});
- });
- }
- function smsSyncHeaderBodyAlign() {
- var $bt = table.closest('.bootstrap-table');
- if (!$bt.length) {
- return;
- }
- var widths = smsGetColWidths();
- if (!widths.length) {
- return;
- }
- var $headerWrap = $bt.find('> .fixed-table-container > .fixed-table-header').first();
- var $bodyWrap = $bt.find('> .fixed-table-container > .fixed-table-body').first();
- var $headerTable = $headerWrap.length ? $headerWrap.children('table').first() : $();
- var $bodyTable = $bodyWrap.length ? $bodyWrap.children('table').first() : table;
- if (!$bodyTable.length) {
- $bodyTable = $bt.find('.fixed-table-body > table').first();
- }
- if ($headerTable.length && $bodyTable.length && $headerTable[0] !== $bodyTable[0]) {
- var bodyEl = $bodyWrap[0];
- var sb = bodyEl ? Math.max(0, bodyEl.offsetWidth - bodyEl.clientWidth) : 0;
- $headerWrap.css('margin-right', sb > 0 ? sb + 'px' : '');
- smsApplyColgroup($headerTable, widths);
- smsApplyColgroup($bodyTable, widths);
- $headerWrap.scrollLeft($bodyWrap.scrollLeft() || 0);
- } else if ($bodyTable.length) {
- smsApplyColgroup($bodyTable, widths);
- }
- $bt.find('thead th .th-inner').css({
- textAlign: 'center',
- justifyContent: 'center'
- });
- }
- table.bootstrapTable({
- url: $.fn.bootstrapTable.defaults.extend.index_url,
- pk: 'id',
- sortName: 'id',
- sortOrder: 'desc',
- singleSelect: true,
- clickToSelect: true,
- commonSearch: true,
- showToggle: false,
- showColumns: false,
- escape: false,
- columns: [columns]
- });
- Table.api.bindevent(table);
- table.on('post-header.bs.table post-body.bs.table load-success.bs.table refresh.bs.table', function () {
- setTimeout(smsSyncHeaderBodyAlign, 0);
- setTimeout(smsSyncHeaderBodyAlign, 80);
- });
- table.on('check.bs.table', function (e, row) {
- var sel = table.bootstrapTable('getSelections') || [];
- if (sel.length <= 1) {
- return;
- }
- $.each(sel, function (i, r) {
- if (r && row && r.id !== row.id) {
- table.bootstrapTable('uncheckBy', {field: 'id', values: [r.id]});
- }
- });
- });
- table.on('post-body.bs.table', function () {
- table.closest('.bootstrap-table').find('.btn-editone').each(function () {
- $(this).data('area', SMS_EDIT_AREA);
- });
- });
- $('#toolbar .btn-edit').data('area', SMS_EDIT_AREA);
- $(window).off('resize.procuremenSms').on('resize.procuremenSms', function () {
- setTimeout(smsSyncHeaderBodyAlign, 50);
- });
- },
- edit: function () {
- Controller.api.bindevent();
- $(document).off('click.procuremenSmsClose', '.btn-procuremen-sms-close').on('click.procuremenSmsClose', '.btn-procuremen-sms-close', function () {
- var index = parent.Layer.getFrameIndex(window.name);
- parent.Layer.close(index);
- });
- $(document).off('click.smsVarInsert', '.sms-var-tag').on('click.smsVarInsert', '.sms-var-tag', function () {
- var tag = $(this).data('tag') || $(this).text();
- tag = String(tag || '').trim();
- if (!tag) {
- return;
- }
- var $ta = $('#sms-template-content');
- if (!$ta.length) {
- return;
- }
- var el = $ta[0];
- var start = el.selectionStart;
- var end = el.selectionEnd;
- var val = $ta.val();
- if (typeof start === 'number' && typeof end === 'number') {
- $ta.val(val.substring(0, start) + tag + val.substring(end));
- var pos = start + tag.length;
- el.setSelectionRange(pos, pos);
- } else {
- $ta.val(val + tag);
- }
- $ta.focus();
- });
- },
- api: {
- bindevent: function () {
- Form.api.bindevent($("form[role=form]"));
- }
- }
- };
- return Controller;
- });
|