');
var gridDiv = document.querySelector("#suggest-aggrid");
grid = new agGridOptions();
grid.suppressRowClickSelection = true;
grid.columnDefs = [//{suppressMenu: true, cellClass:'text-center', checkboxSelection: true, headerCheckboxSelection: multiple, suppressSizeToFit: true, sortable: false, width: 40},
//{suppressMenu: true, cellClass:'text-center', sortable: false, suppressSizeToFit: true, cellRenderer: 'htmlCellRenderer', field: 'images', headerName: '图片', width: 40},
{
suppressMenu: true,
cellClass: 'text-center',
sortable: true,
field: 'code',
headerName: '存货编码',
width: 100
}, {
suppressMenu: true,
cellClass: 'text-left',
sortable: true,
field: 'name',
headerName: '产品名称',
minWidth: 140
}, {
suppressMenu: true,
cellClass: 'text-center',
sortable: true,
field: 'spec',
headerName: '规格型号',
width: 100
}, {
suppressMenu: true,
cellClass: 'text-center',
sortable: true,
field: 'barcode',
headerName: '产品条码',
width: 120
}, {
suppressMenu: true,
cellClass: 'text-center',
sortable: true,
field: 'unit_id_name',
headerName: '计量单位',
width: 80
}, {
suppressMenu: true,
cellClass: 'text-right',
field: 'price',
headerName: '价格',
width: 80
}];
grid.onRowClicked = function (row) {
var ret = grid.dialogSelected([row.data]);
if (ret) {
hideSuggest($input, options);
}
};
/**
* 写入选中
*/
grid.dialogSelected = function (rows) {
var params = grid.remoteParams;
var sid = params.prefix == 1 ? 'sid' : 'id';
var id = [];
var text = [];
$.each(rows, function (index, row) {
id.push(row[sid]);
text.push(row.name);
});
var input_id = params.form_id + '_' + params.id;
$('#' + input_id).val(id.join(','));
$('#' + input_id + '_text').val(text.join(','));
var event = gdoo.event.get(params.form_id + '.' + params.id);
if (event.exist('onSelect')) {
return event.trigger('onSelect', grid.rowSelection == 'multiple' ? rows : rows[0]);
}
return true;
};
new agGrid.Grid(gridDiv, grid);
return $input;
}
$.fn.gdooDialogInput = function (options) {
var self = this;
options = options || {};
options = $.extend(true, {}, defaultOptions, options);
$('body').append('');
return self.each(function () {
var $input = $(this);
var params = $input.data();
var keyupTimer = null;
var isMouseenter = 0;
var $dropdownMenu = $('#gdoo-suggest');
buildSuggest($input, options, params);
$input.off(); // 开始事件处理
$input.on('keydown', function (event) {
// 当提示层显示时才对键盘事件处理
if (!$dropdownMenu.is(':visible')) {
return;
}
if (event.keyCode === options.keyEnter) {
hideSuggest($input, options);
}
}).on('keyup input paste', function (event) {
// 如果弹起的键是回车、向上或向下方向键则返回
if (~$.inArray(event.keyCode, [options.keyDown, options.keyUp, options.keyEnter])) {
$input.val($input.val()); // 让鼠标输入跳到最后
return;
}
clearTimeout(keyupTimer);
keyupTimer = setTimeout(function () {
refreshData($input, options, params);
}, options.delay);
}).on('focus', function () {
$dropdownMenu.off();
var w = $(window).width();
var h = $(window).height();
var width = $input.outerWidth();
var height = $input.outerHeight();
var offset = $input.offset();
var dw = $dropdownMenu.outerWidth();
var dh = $dropdownMenu.outerHeight();
var css = {
top: offset.top + height - 1
}; // 判断是否小于768
if (w < 768) {
css.minWidth = 360;
css.left = 14;
css.right = 14;
} else {
css.left = offset.left; // 右边超出
if (w < offset.left + dw + 10) {
css.left = offset.left - dw + width;
} // 下边超出
if (h < offset.top + dh + 10) {
css.top = offset.top - dh + 1;
}
}
$dropdownMenu.css(css); // 列表中滑动时,输入框失去焦点
$dropdownMenu.on('mouseenter', function () {
isMouseenter = 1;
$input.blur();
}).on('mouseleave', function () {
isMouseenter = 0;
$input.focus();
}).on('click', function () {
// 阻止冒泡
return false;
});
}).on('blur', function () {
// 隐藏对话框
if (!isMouseenter) {
hideSuggest($input, options);
}
});
});
};
})(jQuery);
(function ($) {
'use strict';
$.fn.searchForm = function (options) {
var self = this;
var element = [];
var data = options.data;
var advanced = options.advanced == 1 ? 1 : data.advanced == 1 ? 1 : 0;
var form_id = self.attr('id');
var assign = false;
var values = {};
var _field = 'search-field-';
var _condition = 'search-condition-';
var _value = 'search-value-';
if (advanced) {
_field = 'advanced-' + _field;
_condition = 'advanced-' + _condition;
_value = 'advanced-' + _value;
}
function init() {
if (advanced) {
$.each(data.field, function (i) {
var type = self.find('#' + _field + i).data('type');
setValues(type, i, data.option[i]);
});
} else {
var e = self.find('#' + _field + '0');
e.val(data['field'][0]);
var type = e.find('option:selected').data('type');
setValues(type, 0, data.option[0]);
e.on('change', function () {
assign = true;
var index = this.selectedIndex - 1;
var type = $(this).find('option:selected').data('type');
element[0].value.empty();
setValues(type, 0, data.option[index]);
});
}
}
function setValues(type, i, config) {
self.find('#' + _value + i);
element[i] = {
condition: self.find('#' + _condition + i),
value: self.find('#' + _value + i)
};
setCondition(i, type, data['condition'][i] || '');
handle[type].call(self, i, config);
}
function setCondition(i, type, selected) {
var e = element[i].condition.empty();
var condition = {};
if (assign == true) {
selected = '';
}
condition.number = [{
key: "eq",
value: '等于'
}, {
key: "neq",
value: '不等于'
}, {
key: "gt",
value: '大于'
}, {
key: "lt",
value: '小于'
}];
condition.date = [{
key: "eq",
value: '等于'
}, {
key: "neq",
value: '不等于'
}, {
key: "gt",
value: '大于'
}, {
key: "lt",
value: '小于'
}];
condition.second = [{
key: "eq",
value: '等于'
}, {
key: "neq",
value: '不等于'
}, {
key: "gt",
value: '大于'
}, {
key: "lt",
value: '小于'
}];
condition.text = [{
key: "like",
value: '包含'
}, {
key: "not_like",
value: '不包含'
}, {
key: "eq",
value: '等于'
}, {
key: "neq",
value: '不等于'
}, {
key: "gt",
value: '大于'
}, {
key: "lt",
value: '小于'
}, {
key: "empty",
value: '为空'
}, {
key: "not_empty",
value: '不为空'
}];
if (type == 'second' || type == 'text' || type == 'number' || type == 'date') {
var value = selected || condition[type][0].key;
$.map(condition[type], function (row) {
e.append('');
});
e.parent('div').css("display", "inline-block");
} else if (type == 'birthday') {
e.append('');
e.parent('div').hide();
var value = 'birthday';
} else if (type == 'date2') {
e.append('');
e.parent('div').hide();
var value = 'date2';
} else if (type == 'region') {
e.append('');
e.parent('div').hide();
var value = 'region';
} else if (type == 'second2') {
e.append('');
e.parent('div').hide();
var value = 'second2';
} else if (type == 'dialog') {
e.append('');
e.parent('div').hide();
var value = 'dialog';
} else {
e.append('');
e.parent('div').hide();
var value = 'eq';
}
e.val(value);
toggleValue(i, value);
e.on('change', function () {
toggleValue(i, $(this).val());
});
}
function toggleValue(i, value) {
var e = element[i].value;
if (value == 'empty' || value == 'not_empty') {
e.hide();
} else {
e.show();
}
}
function attr(i, id) {
var value = _value;
var name = 'search';
var res = {};
var id_0 = '';
var id_1 = '';
if (id != undefined) {
id_0 = '-' + id;
id_1 = '_' + id;
}
res.id = form_id + '_' + value + i + id_0;
res.name = name + '_' + i + id_1;
if (assign == false) {
if (id_0) {
var v1 = data['search'][i][id];
res.value = v1 == undefined ? '' : v1;
} else {
var v1 = data['search'][i];
res.value = v1 == undefined ? '' : v1;
}
} else {
res.value = '';
}
return res;
}
function _option(rows) {
var type = $.type(rows);
var option = advanced == true ? '' : '';
if (type == 'array' || type == 'object') {
$.map(rows, function (row) {
option += '';
});
} else {
option = option.concat(rows);
}
return option;
}
self._select = function (config, i, id, space) {
var a = attr(i, id);
var d = _option(config);
var e = $('');
element[i].value.append(e);
if (a.value !== '') {
e.val(a.value);
}
};
self._text = function (i, id, space) {
var a = attr(i, id);
var e = $('');
element[i].value.append(e);
};
self._year = function (i, id, space) {
var a = attr(i, id);
var e = $('');
element[i].value.append(e);
};
self._date = function (i, id, space) {
var a = attr(i, id);
var e = $('');
element[i].value.append(e);
};
self._date2 = function (i, id, space) {
var a0 = attr(i, 0);
var a1 = attr(i, 1);
var e = $('
-
');
element[i].value.append(e);
};
self._second2 = function (i, id, space) {
var a0 = attr(i, 0);
var a1 = attr(i, 1);
var e = $('
-
');
element[i].value.append(e);
};
self._birthday = function (i, id, space) {
var a0 = attr(i, 0);
var a1 = attr(i, 1);
var e = $(' - ');
element[i].value.append(e);
};
self._birthday2 = function (i, id, space) {
var a0 = attr(i, 0);
var a1 = attr(i, 1);
var e = $(' - ');
element[i].value.append(e);
};
self._dialog = function (config, i, id, space) {
var a0 = attr(i, id);
var query = [];
if (config.query) {
config.query['multi'] = config.query['multi'] == 'undefined' ? 1 : config.query['multi'];
$.each(config.query, function (k, v) {
query.push('data-' + k + '="' + v + '"');
});
}
if (advanced) {
var field = self.find('#' + _field + i);
} else {
var field = self.find('#' + _field + '0').find('option:selected');
}
var options = field.data();
var e = '
';
e += '';
e += '';
e += '
';
e += '';
e += '
';
element[i].value.append($(e));
};
var handle = {
empty: function empty(i) {
element[i].value.empty();
},
text: function text(i) {
self._text(i);
},
select2: function select2(i) {
self._text(i);
},
select: function select(i, config) {
self._select(config, i);
},
number: function number(i) {
self._text(i);
},
year: function year(i) {
self._year(i);
},
date: function date(i) {
self._date(i);
},
date2: function date2(i) {
self._date2(i);
},
birthday: function birthday(i) {
self._birthday(i);
},
dialog: function dialog(i, config) {
self._dialog(config, i);
},
second: function second(i) {
self._date(i);
},
second2: function second2(i) {
self._second2(i);
},
option: function option(i, config) {
self._select(config, i);
},
address: function address(i) {
var province = attr(i, 0);
var city = attr(i, 1);
var e = ' ';
element[i].value.append(e);
new pcas(province.id, city.id, province.value, city.value);
},
region: function region(i) {
var province = attr(i, 0);
var city = attr(i, 1);
var county = attr(i, 2);
var province_id = province.value;
var city_id = city.value;
var county_id = county.value;
element[i].value.append(' ');
$.get(app.url('index/api/region', {
layer: 1
}), function (res) {
var option = '';
$.map(res, function (row) {
option += '';
});
var e = $('#' + province.id).html(option);
if (province_id) {
e.val(province_id);
}
_city(i);
_county(i);
self.on('change', '#' + province.id, function () {
province_id = this.value;
city_id = 0;
county_id = 0;
_city(i);
_county(i);
});
self.on('change', '#' + city.id, function () {
city_id = this.value;
county_id = 0;
_county(i);
});
});
function _city(i, space) {
$.get(app.url('index/api/region', {
layer: 2,
parent_id: province_id
}), function (res) {
var option = '';
$.map(res, function (row) {
option += '';
});
var e = $('#' + city.id).html(option);
if (city_id) {
e.val(city_id);
}
});
}
function _county(i, space) {
$.get(app.url('index/api/region', {
layer: 3,
parent_id: city_id
}), function (res) {
var option = '';
$.map(res, function (row) {
option += '';
});
var e = $('#' + county.id).html(option);
if (county_id) {
e.val(county_id);
}
});
}
},
circle: function circle(i) {
var circle = self.attr(i, 0);
var customer = self.attr(i, 1);
var circle_id = circle.value;
var customer_id = customer.value;
element[i].value.append(' ');
$.post(app.url('customer/circle/dialog'), function (res) {
var option = '';
$.map(res, function (row) {
option += '';
});
var e = $('#' + circle.id).html(option);
if (circle_id) {
e.val(circle_id);
}
_customer(i);
});
self.on('change', '#' + circle.id, function () {
circle_id = this.value;
customer_id = 0;
_customer(i);
});
function _customer(i) {
var option = '';
if (circle_id) {
$.post(app.url('customer/customer/dialog', {
limit: 500,
circle_id: circle_id
}), function (res) {
$.map(res.data, function (row) {
option += '';
});
var e = $('#' + customer.id).html(option);
if (customer_id) {
e.val(customer_id);
}
});
} else {
$('#' + customer.id).html(option);
}
}
}
};
self.attr = attr;
self.element = element;
self.options = options;
if (typeof options.init == 'function') {
options.init.call(this, handle);
}
init();
return this;
};
})(jQuery);
(function ($) {
var COUNT = 0;
$.fn.dialog = function (options) {
var self = this,
$this = $(self),
$body = $(document.body),
$element = $this.closest('.dialog');
this.options = options;
var create = function create() {
// fade
var element = '
';
if (options.title) {
element += '
';
}
element += '';
if (options.buttons.length > 0) {
element += '';
}
element += '
'; // 窗口创建一个以上遮罩只显示一层
// options.backdrop = COUNT > 0 ? '' : options.backdrop;
$element = $(element);
$body.append($element);
$element.find(".modal-body").append($this);
$element.modal({
backdrop: options.backdrop
}); //if(options.draggable === true) {
$('.modal-dialog').draggable({
handle: ".modal-header",
iframeFix: true
}); //}
};
var createButton = function createButton(_options) {
var buttons = (_options || options || {}).buttons || {},
$btnrow = $element.find(".modal-footer"); // clear old buttons
$btnrow.html('');
for (var button in buttons) {
var btn = buttons[button],
id = '',
text = '',
classed = 'btn-default',
click = '';
classed = btn['class'] || btn.classed || classed;
$button = $('');
$button.data('click', btn.click);
if (btn.id) {
$button.attr("id", btn.id);
}
$btnrow.append($button);
}
$btnrow.on('click', function (e) {
var click = $(e.target).data('click');
if (typeof click === 'function') {
click.call(self, e);
}
});
$btnrow.data('buttons', buttons);
};
var show = function show() {
$element.modal('show');
var showHandler = options.onShow || function () {};
showHandler.call(self);
};
var close = function close() {
$element.modal('hide');
};
var destroy = function destroy() {
$element.remove();
};
if (options.constructor == Object) {
var defaults = {
show: true,
backdrop: true,
destroy: false
};
options = $.extend(defaults, options);
if ($element.size() == 0) {
create();
createButton();
$element.find('.modal-title').html(options['title']);
if (options['dialogClass']) {
$element.find('.modal-dialog').addClass(options['dialogClass']);
}
$element.on('click', "[data-dismiss='dialog']", function () {
var closeHandler = options.onClose || close;
closeHandler.call(self);
});
$element.one('show.bs.modal', function () {
COUNT++;
});
$element.one('hidden.bs.modal', function () {
COUNT--;
if (COUNT > 0) {
$element.modal('checkScrollbar');
$body.addClass('modal-open');
$element.modal('setScrollbar');
} // 取消绑定的事件
// $element.off('click',"[data-dismiss='dialog']");
// 删除 $element
if (options.destroy == true) {
destroy();
}
});
if (options.modalClass) {
$element.addClass(options.modalClass);
}
}
if (options.show) {
show();
}
}
if (options == "destroy") {
options.destroy = true;
close();
}
if (options == "close") {
close();
}
if (options == "show") {
show();
}
return self;
};
})(jQuery);
(function ($) {
var modal = {
ok: {
text: "确定",
classed: 'btn-info'
},
cancel: {
text: "取消",
classed: 'btn-default'
}
};
$.messager = {};
$.messager.alert = function (title, message, callback) {
if (arguments.length < 2) {
message = title || "";
title = " ";
}
$("
');
} // 检查字段是否为只读
if (listView.field[key].readonly == 0) {
var option = i > 0 ? '删除' : '添加';
tr.push('
' + option + '
');
}
$('#body_' + key).append(tr.join("\n")); // 累加行
listView.total[key]++;
},
deleteRow: function deleteRow(key, obj) {
var tr = obj.parentNode.parentNode;
tr.parentNode.removeChild(tr); // 总计列总数
listView.footerSum(key);
},
init: function init(key) {
// 初始化列表视图
listView.total[key] = 0; // 新建的时候默认显示一行
var length = listView.data[key].length > 0 ? listView.data[key].length : 1;
for (var i = 0; i < length; i++) {
// 添加一行
listView.rowAdd(key); // 计算小计行
listView.rowSum(key, i);
}
; // 总计列总数
listView.footerSum(key);
}
};
window.listView = listView;
})(window);
(function (window) {
// 循环子表
function gridListData(table) {
var gets = {};
var tables = formGridList[table] || [];
if (tables.length) {
for (var i = 0; i < tables.length; i++) {
var t = tables[i];
var store = t.api.memoryStore;
var rows = [];
t.api.stopEditing();
t.api.forEachNode(function (rowNode) {
var data = rowNode.data;
if (isNotEmpty(data[t.dataKey])) {
var id = '' + data.id;
var draft = id.indexOf('draft_');
if (draft === 0) {
data.id = 0;
}
rows.push(data);
}
});
var event = gdoo.event.get('grid.' + t.tableKey);
if (event.exist('onSaveBefore')) {
var ret = event.trigger('onSaveBefore', rows);
if (ret === false) {
return false;
}
}
if (rows.length == 0 && t.tableSaveDataNotEmpty === true) {
toastrError(t.tableTitle + '不能为空。');
return false;
} else {
gets[t.tableKey] = {
rows: rows,
deleteds: store.deleted
};
}
}
}
return gets;
} // 刷新所有相关grid
function reloadGrid(table) {
var iframes = top.document.getElementsByTagName("iframe");
for (var i = 0; i < iframes.length; i++) {
var iframe = iframes[i];
var $gdoo = iframe.contentWindow.gdoo;
if (iframe.id == 'tab_iframe_dashboard') {
// 刷新首页全部部件
var widgets = Object.values($gdoo.widgets);
widgets.forEach(function (grid) {
grid.remoteData();
});
} else {
// 刷新全部页面的相关grid
if ($gdoo && $gdoo.grids) {
var grids = $gdoo.grids;
if (grids[table]) {
grids[table].grid.remoteData();
}
}
}
}
}
window.gridListData = gridListData;
var model = {
bill_url: '',
audit: function audit(table) {
var form = $('#' + table);
var key = form.find('#master_key').val();
var run_id = form.find('#master_run_id').val();
var step_id = form.find('#master_step_id').val();
var run_log_id = form.find('#master_run_log_id').val();
var uri = $('#' + table).find('#master_uri').val();
var url = app.url(uri + '/flowAudit', {
key: key,
run_id: run_id,
step_id: step_id,
run_log_id: run_log_id
});
$.dialog({
title: '单据审批',
url: url,
buttons: [{
text: '取消',
'class': 'btn-default',
click: function click() {
$(this).dialog('close');
}
}, {
text: '提交',
'class': 'btn-info',
click: function click() {
var query = $('#myturn,#' + table).serialize(); // 循环子表
var gets = gridListData(table);
if (gets === false) {
return;
}
var loading = showLoading();
$.post(app.url(uri + '/flowAudit'), query + '&' + $.param(gets), function (res) {
if (res.status) {
reloadGrid(table);
toastrSuccess(res.data);
if (res.url) {
location.href = res.url;
}
} else {
toastrError(res.data);
}
}, 'json').complete(function () {
layer.close(loading);
});
}
}]
});
},
draft: function draft(table) {
var uri = $('#' + table).find('#master_uri').val();
var query = $('#myturn,#' + table).serialize(); // 循环子表
var gets = gridListData(table);
if (gets === false) {
return;
}
var loading = showLoading();
var event = gdoo.event.get('grid.' + table);
$.post(app.url(uri + '/flowDraft'), query + '&' + $.param(gets), function (res) {
if (event.exist('onSaveAfter')) {
res = event.trigger('onSaveAfter', res);
}
if (res.status) {
reloadGrid(table);
toastrSuccess(res.data);
if (res.url) {
location.href = res.url;
}
} else {
toastrError(res.data);
}
}, 'json').complete(function () {
layer.close(loading);
});
},
remove: function remove(url) {
$.messager.confirm('操作警告', '确定要删除吗?', function (btn) {
if (btn == true) {
$.post(url, function (res) {
if (res.status) {
toastrSuccess(res.data);
location.reload();
} else {
toastrError(res.data);
}
}, 'json');
}
});
},
store: function store(table) {
var uri = $('#' + table).find('#master_uri').val();
var query = $('#' + table).serialize(); // 循环子表
var gets = gridListData(table);
if (gets === false) {
return;
}
var loading = showLoading();
$.post(app.url(uri + '/store'), query + '&' + $.param(gets), function (res) {
if (res.status) {
reloadGrid(table);
toastrSuccess(res.data);
if (res.url) {
location.href = res.url;
}
} else {
toastrError(res.data);
}
}, 'json').complete(function () {
layer.close(loading);
});
},
read: function read(table) {
var uri = $('#' + table).find('#master_uri').val();
var query = $('#' + table).serialize();
var loading = showLoading();
$.post(app.url(uri + '/flowRead'), query, function (res) {
if (res.status) {
reloadGrid(table);
toastrSuccess(res.data);
location.reload();
} else {
toastrError(res.data);
}
}, 'json').complete(function () {
layer.close(loading);
});
},
reset: function reset(table) {
$.messager.confirm('操作警告', '确定要重置流程吗', function (btn) {
if (btn == true) {
var uri = $('#' + table).find('#master_uri').val();
var query = $('#' + table).serialize();
var loading = showLoading();
$.post(app.url(uri + '/flowReset'), query, function (res) {
if (res.status) {
location.reload();
} else {
toastrError(res.data);
}
}, 'json').complete(function () {
layer.close(loading);
});
}
});
},
auditLog: function auditLog(key) {
var url = app.url('index/workflow/flowLog', {
key: key
});
$.dialog({
title: '审批记录',
dialogClass: 'modal-lg',
url: url,
buttons: [{
text: '取消',
'class': 'btn-default',
click: function click() {
$(this).dialog('close');
}
}]
});
},
revise: function revise(key) {
var url = app.url('index/workflow/flowRevise', {
key: key
});
formDialog({
title: '流程修正',
url: url,
dialogClass: 'modal-md',
id: 'revise-form',
success: function success(res) {
toastrSuccess(res.data);
location.reload();
$(this).dialog("close");
},
error: function error(res) {
toastrError(res.data);
}
});
}
}; // 流程撤回
model.recall = function (table) {
var key = $('#' + table).find('#master_key').val();
var uri = $('#' + table).find('#master_uri').val();
var log_id = $('#' + table).find('#master_recall_log_id').val();
var url = app.url(uri + '/recall', {
key: key,
log_id: log_id
});
$.dialog({
title: '撤回单据',
url: url,
buttons: [{
text: "取消",
'class': "btn-default",
click: function click() {
$(this).dialog("close");
}
}, {
text: "提交",
'class': "btn-info",
click: function click() {
var query = $('#myrecall').serialize();
var loading = showLoading();
$.post(app.url(uri + '/recall'), query, function (res) {
if (res.status) {
reloadGrid(table);
toastrSuccess(res.data);
location.reload();
} else {
toastrError(res.data);
}
}, 'json').complete(function () {
layer.close(loading);
});
}
}]
});
}; // 弃审单据
model.abort = function (table) {
var key = $('#' + table).find('#master_key').val();
var uri = $('#' + table).find('#master_uri').val();
var url = app.url(uri + '/abort', {
key: key
});
$.dialog({
title: '弃审单据',
url: url,
buttons: [{
text: "取消",
'class': "btn-default",
click: function click() {
$(this).dialog("close");
}
}, {
text: "提交",
'class': "btn-info",
click: function click() {
var query = $('#myabort').serialize();
var loading = showLoading();
$.post(app.url(uri + '/abort'), query, function (res) {
if (res.status) {
reloadGrid(table);
toastrSuccess(res.data);
location.reload();
} else {
toastrError(res.data);
}
}, 'json').complete(function () {
layer.close(loading);
});
}
}]
});
}; // 普通审核弃审
model.audit2 = function (table) {
var key = $('#' + table).find('#master_key').val();
var uri = $('#' + table).find('#master_uri').val();
$.messager.confirm('操作警告', '确定要审核单据吗', function (btn) {
if (btn == true) {
var loading = showLoading();
$.post(app.url(uri + '/audit'), {
key: key
}, function (res) {
if (res.status) {
reloadGrid(table);
toastrSuccess(res.data);
location.reload();
} else {
toastrError(res.data);
}
}, 'json').complete(function () {
layer.close(loading);
});
}
});
}; // 普通审核弃审
model.abort2 = function (table) {
var key = $('#' + table).find('#master_key').val();
var uri = $('#' + table).find('#master_uri').val();
$.messager.confirm('操作警告', '确定要弃审单据吗', function (btn) {
if (btn == true) {
var loading = showLoading();
$.post(app.url(uri + '/abort'), {
key: key
}, function (res) {
if (res.status) {
reloadGrid(table);
top.$.toastr('success', res.data);
location.reload();
} else {
top.$.toastr('error', res.data);
}
}, 'json').complete(function () {
layer.close(loading);
});
}
});
}; // 子表新增
model.createRow = function (table) {
var grid = gdoo.forms[table];
var onCreateRow = window[table + '.onCreateRow'];
if (typeof onCreateRow == 'function') {
var ret = onCreateRow.call(grid, table);
if (ret === false) {
return false;
}
}
grid.api.memoryStore.create({});
}; // 子表删除
model.deleteRow = function (table) {
var grid = gdoo.forms[table];
var onDeleteRow = window[table + '.onDeleteRow'];
if (typeof onDeleteRow == 'function') {
var ret = onDeleteRow.call(grid, table);
if (ret === false) {
return false;
}
}
var selectedNodes = grid.api.getSelectedNodes();
if (selectedNodes && selectedNodes.length === 1) {
var selectedNode = selectedNodes[0];
grid.api.deleteRow(selectedNode.data);
grid.api.forEachNode(function (node) {
if (node.childIndex === selectedNode.childIndex) {
node.setSelected(true);
return;
}
});
}
}; // 快速搜索
model.quickFilter = function (table) {
var grid = gdoo.forms[table];
var $div = $('#' + table + '_quick_filter_text');
var $el = $div.dialog({
title: ' 过滤' + grid.tableTitle,
modalClass: 'no-padder',
dialogClass: 'modal-sm',
buttons: [{
text: "确定",
classed: 'btn-info',
click: function click() {
grid.api.setQuickFilter($div.find('input').val());
$el.dialog("close");
}
}, {
text: "取消",
classed: 'btn-default',
click: function click() {
$el.dialog("close");
}
}]
}).on('keydown', function (e) {
if (e.keyCode == 13) {
grid.api.setQuickFilter($div.find('input').val());
$el.dialog("close");
}
});
}; // 子表关闭
model.closeRow = function (table) {
var me = this;
var grid = gdoo.forms[table];
var rows = grid.api.getSelectedRows();
if (rows.length > 0) {
var id = rows[0].id;
top.$.messager.confirm('操作提醒', '是否要关闭选中的行数据?', function (btn) {
if (btn == true) {
var loading = showLoading();
$.post(app.url(me.bill_url + '/closeRow'), {
table: table,
id: id
}, function (res) {
if (res.status) {
toastrSuccess(res.data);
grid.remoteData();
} else {
toastrError(res.data);
}
}, 'json').complete(function () {
layer.close(loading);
});
}
});
} else {
toastrError('最少选择一行记录。');
}
}; // 子表关闭所有
model.closeAllRow = function (table) {
var me = this;
var grid = gdoo.forms[table];
var ids = [];
grid.api.forEachNode(function (node) {
ids.push(node.data.id);
});
if (ids.length > 0) {
top.$.messager.confirm('操作提醒', '是否要关闭所有行数据?', function (btn) {
if (btn == true) {
var loading = showLoading();
$.post(app.url(me.bill_url + '/closeAllRow'), {
table: table,
ids: ids
}, function (res) {
if (res.status) {
toastrSuccess(res.data);
grid.remoteData();
} else {
toastrError(res.data);
}
}, 'json').complete(function () {
layer.close(loading);
});
}
});
} else {
toastrError('最少选择一行记录。');
}
};
window.flow = model;
})(window);
(function ($) {
function gridAction(table, name) {
this.name = name;
this.table = table;
this.dialogType = 'dialog';
this.show = function (data, key, name) {
var me = this;
if (data.flow_form_edit == 1) {
me.audit(data);
return;
}
var url = app.url(me.bill_url + '/show', {
id: data.master_id
});
if (me.dialogType == 'dialog') {
viewDialog({
title: me.name,
dialogClass: 'modal-lg',
url: url,
close: function close() {
$(this).dialog("close");
}
});
} else {
if (isEmpty(key)) {
key = me.bill_url.replace(/\//g, '_') + '_show';
}
if (isEmpty(name)) {
name = me.name;
}
top.addTab(me.bill_url + '/show?id=' + data.master_id, key, name);
}
};
this["import"] = function () {
var me = this;
var grid = gdoo.grids[me.table].grid;
formDialog({
title: '数据导入',
url: app.url(me.bill_url + '/import'),
dialogClass: 'modal-md',
id: 'import-dialog',
onSubmit: function onSubmit() {
var fd = new FormData();
fd.append("file", $('#import_file')[0].files[0]);
var loading = showLoading();
$.ajax({
url: app.url(me.bill_url + '/import'),
type: "POST",
data: fd,
processData: false,
contentType: false,
complete: function complete() {
layer.close(loading);
},
success: function success(res) {
if (res.status) {
$('#modal-import-dialog').dialog('close');
grid.remoteData();
toastrSuccess(res.data);
} else {
toastrError(res.data);
}
}
});
}
});
};
this["delete"] = function () {
var me = this;
var grid = gdoo.grids[me.table].grid;
var rows = grid.api.getSelectedRows();
var ids = [];
$.each(rows, function (index, row) {
ids.push(row.master_id);
});
if (ids.length > 0) {
var content = ids.length + '个' + me.name + '将被删除?';
top.$.messager.confirm('删除' + me.name, content, function (btn) {
if (btn == true) {
var loading = showLoading();
$.post(app.url(me.bill_url + '/delete'), {
id: ids
}, function (res) {
if (res.status) {
toastrSuccess(res.data);
grid.remoteData();
} else {
toastrError(res.data);
}
}, 'json').complete(function () {
layer.close(loading);
});
}
});
} else {
toastrError('最少选择一行记录。');
}
};
this.created_by = function (data) {
var me = this;
var grid = gdoo.grids[me.table].grid;
formDialog({
title: '私信',
url: app.url('user/message/create', {
user_id: data.id
}),
storeUrl: app.url('model/form/store'),
id: 'user_message',
dialogClass: 'modal-md',
success: function success(res) {
toastrSuccess(res.data);
grid.remoteData();
$(this).dialog("close");
},
error: function error(res) {
toastrError(res.data);
}
});
};
this.create = function () {
var me = this;
var grid = gdoo.grids[me.table].grid;
if (me.dialogType == 'dialog') {
formDialog({
title: '新建' + me.name,
url: app.url(me.bill_url + '/create'),
storeUrl: app.url(me.bill_url + '/store'),
id: me.table,
table: me.table,
dialogClass: 'modal-lg',
success: function success(res) {
toastrSuccess(res.data);
grid.remoteData();
$(this).dialog("close");
},
error: function error(res) {
toastrError(res.data);
}
});
} else {
var key = me.bill_url.replace(/\//g, '_') + '_show';
top.addTab(me.bill_url + '/create', key, me.name);
}
};
this.edit = function (data) {
var me = this;
var grid = gdoo.grids[me.table].grid;
if (me.dialogType == 'dialog') {
formDialog({
title: '编辑' + me.name,
url: app.url(me.bill_url + '/edit', {
id: data.master_id
}),
storeUrl: app.url(me.bill_url + '/store'),
id: me.table,
table: me.table,
dialogClass: 'modal-lg',
success: function success(res) {
toastrSuccess(res.data);
grid.remoteData();
$(this).dialog("close");
},
error: function error(res) {
toastrError(res.data);
}
});
} else {
var key = me.bill_url.replace(/\//g, '_') + '_show';
top.addTab(me.bill_url + '/edit?id=' + data.master_id, key, me.name);
}
};
this.audit = function (data) {
var me = this;
var grid = gdoo.grids[me.table].grid;
if (me.dialogType == 'dialog') {
formDialog({
title: '审核' + me.name,
url: app.url(me.bill_url + '/audit', {
id: data.master_id
}),
storeUrl: app.url(me.bill_url + '/store'),
id: me.table,
table: me.table,
dialogClass: 'modal-lg',
success: function success(res) {
toastrSuccess(res.data);
grid.remoteData();
$(this).dialog("close");
},
error: function error(res) {
toastrError(res.data);
}
});
} else {
var key = me.bill_url.replace(/\//g, '_') + '_show';
top.addTab(me.bill_url + '/audit?id=' + data.master_id, key, me.name);
}
};
this.batchEdit = function () {
var me = this;
var grid = gdoo.grids[me.table].grid;
var rows = grid.api.getSelectedRows();
var ids = [];
$.each(rows, function (index, row) {
ids.push(row.master_id);
});
if (ids.length > 0) {
formDialog({
title: '批量编辑',
dialogClass: 'modal-sm',
id: 'batch-edit-form',
url: app.url(me.bill_url + '/batchEdit', {
ids: ids.join(',')
}),
success: function success(res) {
toastrSuccess(res.data);
grid.remoteData();
$(this).dialog("close");
},
close: function close() {
$(this).dialog("close");
}
});
} else {
toastrError('最少选择一行记录。');
}
}; // 导出
this["export"] = function () {
var me = this;
var grid = gdoo.grids[me.table].grid;
LocalExport(grid, me.name);
};
this.filter = function () {
var me = this;
var config = gdoo.grids[me.table];
var grid = config.grid;
var search = config.search; // 过滤数据
$(search.advanced.el).dialog({
title: '高级搜索',
modalClass: 'no-padder',
buttons: [{
text: "取消",
'class': "btn-default",
click: function click() {
$(this).dialog("close");
}
}, {
text: "确定",
'class': "btn-info",
click: function click() {
var query = search.advanced.el.serializeArray();
var params = {};
search.queryType = 'advanced';
$.map(query, function (row) {
params[row.name] = row.value;
});
params['page'] = 1;
grid.remoteData(params);
$(this).dialog("close");
return false;
}
}]
});
};
}
window.gridAction = gridAction;
})(jQuery);
var select2List = {};
var dialogCacheSelected = {};
$(function () {
var $document = $(document); // 注册jQuery Ajax全局错误提示
$document.ajaxError(function (event, xhr) {
if (xhr.responseJSON) {
toastrError(xhr.responseJSON.message);
}
});
var input_select2 = $document.find('.input-select2');
if (input_select2.length) {
input_select2.select2();
} // 新提示
$document.tooltip({
container: 'body',
placement: 'auto',
selector: '.hinted',
delay: {
show: 200,
hide: 0
}
}); // 批量操作
$('.select-all').on('click', function () {
var tr = $('.select-row').closest('tr');
if ($(this).prop('checked')) {
tr.addClass('success');
} else {
tr.removeClass('success');
}
$(".select-row").prop('checked', $(this).prop('checked'));
}); // 从子窗口关闭tab
$document.on('click', '[data-toggle="closetab"]', function () {
// 获取框架的名称
if (window.name) {
var id = window.name.replace('iframe_', '');
} else {
var id = $(this).data('id');
}
top.$.addtabs.close({
id: 'tab_' + id
});
}); // 点击td选择行
$('.table tbody tr').on('click', function (e) {
var tr = $(this);
var checkbox = tr.find('.select-row');
var checked = checkbox.prop('checked');
if (checkbox.length == 0) {
return;
}
if (e.target.tagName == 'INPUT') {
setCheckbox(checked);
}
if (e.target.tagName == 'DIV') {
setCheckbox(!checked);
}
if (e.target.tagName == 'TD') {
setCheckbox(!checked);
}
function setCheckbox(checked) {
if (checked) {
tr.addClass('success');
} else {
tr.removeClass('success');
}
checkbox.prop('checked', checked);
}
}); // 转到某些地址,单页面内类型切换
$document.on('change', '[data-toggle="redirect"]', function () {
// 从select的rel传递过来的地址
var url = $(this).data('url');
var id = $(this).attr('id');
var selected = $(this).find("option:selected").val();
location.href = url.replace(new RegExp('(' + id + '=)[^&]*', 'g'), '$1' + selected);
}); // 清除弹出层id
$document.on('click.dialog.search', '[data-toggle="dialog-clear"]', function () {
var params = $(this).data();
$('#' + params.id).val('');
$('#' + params.id + '_text').val('');
var event = gdoo.event.get(params.id);
event.trigger('clear', params);
}); // 弹出对话框表单
$document.on('click.dialog.view', '[data-toggle="dialog-view"]', function () {
var params = $(this).data();
var query = {};
$.each(params, function (k, v) {
if (k == 'url' || k == 'title' || k == 'toggle') {
return true;
}
query[k] = v;
}); // 传递当前iframe
var iframe_id = getIframeName();
if (iframe_id) {
query.iframe_id = iframe_id;
}
var option = gdoo.formKey(params);
var event = gdoo.event.get(option.key);
event.trigger('open', params, query);
var url = params['url'];
var title = params['title'];
var url = app.url(url, query);
$.dialog({
title: title,
url: url,
dialogClass: 'modal-lg',
buttons: [{
text: '取消',
"class": 'btn-default',
click: function click() {
var me = this;
$(me).dialog("close");
}
}, {
text: "确定",
'class': "btn-info",
click: function click() {
var grid = gdoo.dialogs[option.id];
if (grid) {
var ret = gdoo.dialogSelected(event, params, option, grid);
if (ret === true) {
$(this).dialog("close");
}
} else {
$(this).dialog("close");
}
}
}]
});
});
var gdoo_dialog_input = $document.find('.gdoo-dialog-input');
if (gdoo_dialog_input.length) {
gdoo_dialog_input.gdooDialogInput();
} // 弹出对话框表单
$document.on('click.dialog.image', '[data-toggle="dialog-image"]', function () {
var params = $(this).data();
$.dialog({
title: params.title,
html: '',
buttons: [{
text: '确定',
'class': 'btn-default',
click: function click() {
$(this).dialog("close");
}
}]
});
}); // 弹出对话框表单
$document.on('click.dialog.form', '[data-toggle="dialog-form"]', function () {
var params = $(this).data();
params.id = params.id || 'myform';
params.size = params.size || 'md';
$.dialog({
title: params.title,
url: params.url,
dialogClass: 'modal-' + params.size,
buttons: [{
text: '取消',
"class": 'btn-default',
click: function click() {
var me = this;
if (typeof error === 'function') {
error.call(me, res);
} else {
$(me).dialog("close");
}
}
}, {
text: '保存',
"class": 'btn-info',
click: function click() {
var me = this;
var action = $('#' + params.id).attr('action');
var formData = $('#' + params.id).serialize();
$.post(action, formData, function (res) {
if (typeof success === 'function') {
success.call(me, res);
} else {
if (res.status) {
if (res.data == 'reload') {
window.location.reload();
} else {
toastrSuccess(res.data);
$(me).dialog('close');
}
} else {
toastrError(res.data);
}
}
}, 'json');
}
}]
});
}); // 日期选择
$document.on('click.date', '[data-toggle="date"]', function () {
var data = $(this).data();
var ops = {};
ops['dateFmt'] = data['format'] || 'yyyy-MM-dd';
var onpicked = window[this.id + '.onpicked'];
if (typeof onpicked == 'function') {
ops['onpicked'] = onpicked;
}
if (data['dchanging']) {
ops['dchanging'] = data['dchanging'];
}
datePicker(ops);
}); // 日期时间选项
$document.on('click.datetime', '[data-toggle="datetime"]', function () {
var data = $(this).data();
var ops = {};
ops['dateFmt'] = data['format'] || 'yyyy-MM-dd HH:mm';
if (data['dchanging']) {
ops['dchanging'] = data['dchanging'];
}
datePicker(ops);
}); // 关闭layerFrame
$document.on('click.frame.close', '[data-toggle="layer-frame-close"]', function () {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}); // 打开layerFrame
$document.on('click.frame.url', '[data-toggle="layer-frame-url"]', function () {
var url = $(this).data('url');
var title = $(this).data('title') || false;
var skin = $(this).data('skin') || 'frame';
var close = $(this).data('close') || false;
var index = layer.open({
skin: 'layui-layer-' + skin,
scrollbar: false,
closeBtn: close,
title: title,
type: 2,
move: false,
area: ['100%', '100%'],
content: url
});
}); // 打开tabFrame
$document.on('click.tab.frame', '[data-toggle="tab-frame-url"]', function () {
var url = $(this).data('url');
var id = $(this).data('id');
var name = $(this).data('name');
top.addTab(url, id, name);
}); // 媒体管理删除
$document.on('click', '[data-toggle="media-delete"]', function () {
var me = this;
var media = $(me).parent();
var rows = $(me).closest('.media-controller').find('.media-item');
if (rows.length > 1) {
media.remove();
} else {
media.find('img').attr('src', app.url('assets/images/nopic.jpg'));
media.find('input').val('');
}
});
$('a.image-show').hover(function (e) {
var params = $(this).data();
var img = $('
');
$("body").append(img);
$(this).find('img').stop().fadeTo('slow', 0.5);
var $window = $(window);
var $image = $(document).find('#image');
var height = $image.height();
var width = $image.width();
var left = $window.scrollLeft() + ($window.width() - width) / 2 + 'px';
var top = $window.scrollTop() + ($window.height() - height) / 2 + 'px';
var offset = $(this).offset();
$image.css({
left: offset.left + 100,
top: top
});
$image.fadeIn('fast');
}, function () {
$(this).find('img').stop().fadeTo('slow', 1);
$("#image").remove();
}); // 表格拖动排序
$('#table-sortable tbody').sortable({
// opacity: 0.6,
delay: 50,
cursor: "move",
axis: "y",
items: "tr",
handle: 'td.move',
// containmentType:"parent",
// placeholder: "ui-sortable-placeholder",
helper: function helper(event, ui) {
// 在拖动时,拖动行的cell(单元格)宽度会发生改变。
ui.children().each(function () {
$(this).width($(this).width());
});
return ui;
},
stop: function stop(event, ui) {},
start: function start(event, ui) {
ui.placeholder.outerHeight(ui.item.outerHeight());
},
update: function update() {
var url = $(this).parent().attr('url');
var orders = $(this).sortable("toArray");
$.post(url, {
sort: orders
}, function (res) {
toastrSuccess(res.data);
});
}
}); //.disableSelection();
});
var app = {
/**
* 确认窗口
*/
confirm: function confirm(url, content, title) {
title = title || '操作警告';
$.messager.confirm(title, content, function (btn) {
if (btn == true) {
location.href = url;
}
});
},
/**
* 警告窗口
*/
alert: function alert(title, content) {
$.messager.alert(title, content);
},
/**
* 获取附带基本路径的URL
*/
url: function url(uri, params) {
if (uri == '/') {
return settings.public_url;
}
query = params == '' || params === undefined ? '' : '?' + $.param(params);
return settings.public_url + '/' + uri + query;
},
redirect: function redirect(uri, params) {
return window.location.href = app.url(uri, params);
},
/**
* 汉字转换为拼音
*/
pinyin: function pinyin(read, write, type) {
type = type || 'first';
var field = $('#' + write).val();
if (field == '') {
$.get(app.url('index/api/pinyin?type=' + type + '&id=' + Math.random()), {
name: $('#' + read).val()
}, function (data) {
$('#' + write).val(data);
});
}
}
};
var uploader = {
file: function file(fileId) {
var id = $('#' + fileId).find(".id").val();
location.href = app.url('index/attachment/download', {
id: id
});
},
cancel: function cancel(fileId) {
var id = $('#' + fileId).find(".id").val();
if (id > 0) {
var name = $('#' + fileId).find(".file-name a").text();
$.messager.confirm('删除文件', '确定要删除 ' + name + ' 此文件吗', function (btn) {
if (btn == true) {
$.get(app.url('index/attachment/delete'), {
id: id
}, function (res) {
if (res == 1) {
$('#' + fileId).remove();
}
});
}
});
} else {
$('#' + fileId).remove();
}
},
insert: function insert(fileId) {
var id = $('#' + fileId).find(".id").val();
var name = $('#' + fileId).find(".file-name a").text(); // 检查图片类型
if (/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(name)) {
var html = '';
} else {
var html = '' + name + '';
}
UE.getEditor("content").execCommand('insertHtml', html);
}
};
/**
* 媒体对话框
*/
function mediaDialog(url, name, id, multi) {
var params = {
id: id,
name: name,
multi: multi
};
var url = app.url(url, params);
$.dialog({
title: '媒体管理',
url: url,
dialogClass: 'modal-lg',
buttons: [{
text: ' 取消',
'class': "btn-default",
click: function click() {
$(this).dialog('close');
}
}, {
text: ' 确定',
'class': "btn-info",
click: function click() {
if (window.saveMedia) {
window.saveMedia.call(this, params);
$(this).dialog('close');
}
}
}]
});
}
/**
* 显示窗口
*/
function viewBox(name, title, url, size) {
size = size || 'md';
$.dialog({
title: title,
url: url,
dialogClass: 'modal-' + size,
buttons: [{
text: "确定",
'class': "btn-default",
click: function click() {
$(this).dialog("close");
}
}]
});
}
var viewDialogIndex = 0;
/**
* 表单窗口
*/
function viewDialog(options) {
if (options.id === undefined) {
options.id = 'view-dialog-' + viewDialogIndex;
viewDialogIndex++;
}
var exist = $('#modal-' + options.id);
if (exist.length > 0) {
exist.dialog('show');
}
var defaults = {
title: name,
url: url,
buttons: [{
text: '确定',
'class': 'btn-default',
click: function click() {
$(this).dialog('close');
}
}]
};
var settings = $.extend({}, defaults, options);
$.dialog(settings);
}
var formDialogIndex = 0;
/**
* 表单窗口
*/
function formDialog(options) {
if (options.id === undefined) {
options.id = 'form-dialog-' + formDialogIndex;
formDialogIndex++;
}
var exist = $('#modal-' + options.id);
if (exist.length > 0) {
exist.dialog('show');
} else {
var defaults = {
title: 'formDialog',
backdrop: 'static',
buttons: [{
text: '取消',
"class": 'btn-default',
click: function click() {
var me = this;
if (typeof error === 'function') {
error.call(me);
} else {
$(me).dialog("close");
}
}
}, {
text: '保存',
"class": 'btn-info',
click: function click() {
var me = this;
var options = me.options; // 自定义提交函数
if (typeof options.onSubmit === 'function') {
options.onSubmit.call(me);
} else {
// 默认提交方法
if (me.options.storeUrl) {
var action = me.options.storeUrl;
} else {
var action = $('#' + options.id).attr('action');
}
var query = $('#' + options.id).serialize(); // 循环子表
var gets = gridListData(options.table);
if (gets === false) {
return;
}
var loading = showLoading();
$.post(action, query + '&' + $.param(gets), function (res) {
if (res.status) {
if (typeof options.success === 'function') {
options.success.call(me, res);
}
} else {
if (typeof options.error === 'function') {
options.error.call(me, res);
}
}
}, 'json').complete(function () {
layer.close(loading);
});
}
}
}]
};
var settings = $.extend({}, defaults, options);
$.dialog(settings);
}
}
/**
* 转换时间,计算差值
*/
function niceTime(timestamp) {
// 当前时间戳
var nowtime = new Date().getTime(); // 计算时间戳差值
var secondNum = parseInt((nowtime - timestamp * 1000) / 1000);
if (secondNum >= 0 && secondNum < 60) {
return secondNum + '秒前';
} else if (secondNum >= 60 && secondNum < 3600) {
var nTime = parseInt(secondNum / 60);
return nTime + '分钟前';
} else if (secondNum >= 3600 && secondNum < 3600 * 24) {
var nTime = parseInt(secondNum / 3600);
return nTime + '小时前';
} else {
var nTime = parseInt(secondNum / 86400);
return nTime + '天前';
}
}
/**
* 首字母大写
*/
function ucfirst(str) {
if (str) {
return str[0].toUpperCase() + str.substr(1);
} else {
return str;
}
}
/**
* 数字金额大写转换(可以处理整数,小数,负数)
*/
function digitUppercase(n) {
var fraction = ['角', '分'];
var digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
var unit = [['元', '万', '亿'], ['', '拾', '佰', '仟']];
var head = n < 0 ? '欠' : '';
n = Math.abs(n);
var s = '';
for (var i = 0; i < fraction.length; i++) {
s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
}
s = s || '整';
n = Math.floor(n);
for (var i = 0; i < unit[0].length && n > 0; i++) {
var p = '';
for (var j = 0; j < unit[1].length && n > 0; j++) {
p = digit[n % 10] + unit[1][j] + p;
n = Math.floor(n / 10);
}
s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
}
return head + s.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整');
}
;
/**
* 数字格式化
*/
function number_format(number, decimals, decPoint, thousandsSep) {
number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
var n = !isFinite(+number) ? 0 : +number;
var prec = !isFinite(+decimals) ? 0 : Math.abs(decimals);
var sep = typeof thousandsSep === 'undefined' ? ',' : thousandsSep;
var dec = typeof decPoint === 'undefined' ? '.' : decPoint;
var s = '';
var toFixedFix = function toFixedFix(n, prec) {
if (('' + n).indexOf('e') === -1) {
return +(Math.round(n + 'e+' + prec) + 'e-' + prec);
} else {
var arr = ('' + n).split('e');
var sig = '';
if (+arr[1] + prec > 0) {
sig = '+';
}
return (+(Math.round(+arr[0] + 'e' + sig + (+arr[1] + prec)) + 'e-' + prec)).toFixed(prec);
}
}; // @todo: for IE parseFloat(0.55).toFixed(0) = 0;
s = (prec ? toFixedFix(n, prec).toString() : '' + Math.round(n)).split('.');
if (s[0].length > 3) {
s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
}
if ((s[1] || '').length < prec) {
s[1] = s[1] || '';
s[1] += new Array(prec - s[1].length + 1).join('0');
}
return s.join(dec);
}
/**
* 检查变量是否为空
*/
function isEmpty(val) {
try {
if (val == '' || val == null || val == undefined) {
return true;
} // 判断数字是否是NaN
if (typeof val === "number") {
if (isNaN(val)) {
return true;
} else {
return false;
}
} // 判断参数是否是布尔、函数、日期、正则,是则返回false
if (typeof val === "boolean" || typeof val === "function" || val instanceof Date || val instanceof RegExp) {
return false;
} //判断参数是否是字符串,去空,如果长度为0则返回true
if (typeof val === "string") {
if (val.trim().length == 0) {
return true;
} else {
return false;
}
}
if (_typeof(val) === 'object') {
// 判断参数是否是数组,数组为空则返回true
if (val instanceof Array) {
if (val.length == 0) {
return true;
} else {
return false;
}
} //判断参数是否是对象,判断是否是空对象,是则返回true
if (val instanceof Object) {
//判断对象属性个数
if (Object.getOwnPropertyNames(val).length == 0) {
return true;
} else {
return false;
}
}
}
} catch (e) {
return false;
}
}
/**
* 检查变量是否不为空
*/
function isNotEmpty(value) {
return !isEmpty(value);
}
/**
* 清除字符串两边的空格
*/
String.prototype.trim = function () {
return this.replace(/^\s+|\s+$/g, '');
};
/**
* 封装全部替换字符串
*/
String.prototype.replaceAll = function (search, replace) {
return this.replace(new RegExp(search, "gm"), replace);
};
/**
* 正则去掉所有的html标记
* @param {*} str
*/
function delHtmlTag(str) {
return str.replace(/<[^>]+>/g, "");
}
function isWeiXin() {
var ua = window.navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
return true;
} else {
return false;
}
}
function toastrSuccess(content) {
if (isWeiXin()) {
$.toastr('success', content);
} else {
top.$.toastr('success', content);
}
}
function toastrError(content) {
if (isWeiXin()) {
$.toastr('error', content);
} else {
top.$.toastr('error', content);
}
}
function url(uri, params) {
query = params == '' || params === undefined ? '' : '?' + $.param(params);
return settings.public_url + '/' + uri + query;
}
/**
* 时间戳格式化
*/
function format_datetime(value) {
function add0(v) {
return v < 10 ? '0' + v : v;
}
value = parseInt(value) * 1000;
var time = new Date(value);
var y = time.getFullYear();
var m = time.getMonth() + 1;
var d = time.getDate();
var h = time.getHours();
var mm = time.getMinutes();
var s = time.getSeconds();
return y + '-' + add0(m) + '-' + add0(d) + ' ' + add0(h) + ':' + add0(mm);
}
/**
* 时间戳格式化
*/
function format_date(value) {
function add0(v) {
return v < 10 ? '0' + v : v;
}
value = parseInt(value) * 1000;
var time = new Date(value);
var y = time.getFullYear();
var m = time.getMonth() + 1;
var d = time.getDate();
var h = time.getHours();
var mm = time.getMinutes();
var s = time.getSeconds();
return y + '-' + add0(m) + '-' + add0(d);
}
/**
* ajax 提交
* @param {*} table
* @param {*} callback
*/
function ajaxSubmit(table, callback) {
// 监听提交事件
$('#' + table + '-form-submit').on('click', function () {
var me = $('#' + table);
var url = me.attr('action');
var data = me.serialize();
var rows = {};
var rows = gridListData(table);
if (rows === false) {
return;
}
data = data + '&' + $.param(rows);
var loading = showLoading();
$.post(url, data, function (res) {
if (typeof callback === 'function') {
callback(res);
} else {
if (res.status) {
toastrSuccess(res.data);
if (res.url) {
self.location.href = res.url;
}
} else {
toastrError(res.data);
}
}
}, 'json').complete(function () {
layer.close(loading);
});
return false;
});
}
/**
* 获取框架的name
* @returns
*/
function getIframeName() {
var name = window.name;
return name ? name.replace('iframe_', '') : '';
}
/**
* 获取框架的document
* @param {*} iframe_id
* @returns
*/
function getIframeDocument(iframe_id) {
if (iframe_id) {
var iframe = window.frames['iframe_' + iframe_id];
if (iframe) {
return iframe.document;
} else {//toastrError('iframe_id参数无效。');
}
}
return null;
}
/**
* 数据加载提示
*/
function showLoading(msg) {
var loading = layer.msg(msg || '数据提交中...', {
icon: 16,
shade: 0.1,
time: 1000 * 120
});
return loading;
}
/**
* 格式化文件大小
* @param {*} fileSize
*/
function fileFormatSize(fileSize) {
if (fileSize < 1024) {
return fileSize + 'B';
} else if (fileSize < 1024 * 1024) {
var temp = fileSize / 1024;
temp = temp.toFixed(2);
return temp + 'KB';
} else if (fileSize < 1024 * 1024 * 1024) {
var temp = fileSize / (1024 * 1024);
temp = temp.toFixed(2);
return temp + 'MB';
} else {
var temp = fileSize / (1024 * 1024 * 1024);
temp = temp.toFixed(2);
return temp + 'GB';
}
}
/**
* 扫码上传功能
*/
function FindFile(inputId, key) {
$.post(app.url('index/attachment/draft'), {
key: key
}, function (data) {
var qrArray = [];
var fileDraft = "#fileDraft_" + inputId;
var items = $(fileDraft).find(".id");
$.each(items, function (i, row) {
qrArray.push($(this).val());
});
$.each(data, function (i, row) {
if (qrArray.indexOf(row.id + "") == -1) {
row.size = fileFormatSize(row.size);
var html = template("uploader-item-tpl", row);
$(fileDraft).append(html);
}
});
});
}
/**
* 格式为数值
* @param {*} value
*/
function toNumber(value) {
value = parseFloat(value);
return isNaN(value) ? 0 : isFinite(value) ? value : 0;
}
/**
* 实现StringBuilder
*/
function StringBuilder() {
this._stringArray = new Array();
}
StringBuilder.prototype.append = function (str) {
this._stringArray.push(str);
};
StringBuilder.prototype.appendLine = function (str) {
this._stringArray.push(str + "\n");
};
StringBuilder.prototype.toString = function (joinGap) {
return this._stringArray.join(joinGap);
};
/**
* 本地导出excel
* @param {*} grid
* @param {*} name
*/
function LocalExport(grid, name) {
if (grid.api.getDisplayedRowCount() == 0) {
toastrError("表格无数据,无法导出.");
return;
}
function getColumnsTable(columns) {
var table = [];
getColumnsRows(columns, 0, table);
return table;
}
function getColumnsRows(columns, level, table) {
var row = null;
if (table.length > level) {
row = table[level];
} else {
row = [];
table.push(row);
}
$.each(columns, function (name, column) {
var children = column['children'];
if (children != null) {
column['colspan'] = children.length;
getColumnsRows(children, level + 1, table);
}
column['rowspan'] = 1;
row.push(column);
});
}
function getColumnsBottom(columns) {
var columnsBottom = [];
$.each(columns, function (i, column) {
if (column['children'] != null) {
var children = column['children'];
$.each(getColumnsBottom(children), function (j, v) {
columnsBottom.push(v);
});
} else {
columnsBottom.push(column);
}
});
return columnsBottom;
}
var columns = [];
$.each(grid.columnDefs, function (i, column) {
if (column['checkboxSelection'] == true) {
return;
}
if (column['cellRenderer'] == '"actionCellRenderer"') {
return;
}
columns.push(column);
});
var columnsBottom = getColumnsBottom(columns);
var columnsTable = getColumnsTable(columns);
console.log("开始导出任务:" + name);
var sb = new StringBuilder(); // 写出列名
var columnsCount = columnsTable.length - 1;
$.each(columnsTable, function (i, rows) {
var columnsRow = rows;
sb.appendLine('
');
$.each(columnsRow, function (j, column) {
var rowspan = toNumber(column['rowspan']);
var colspan = toNumber(column['colspan']);
if (columnsCount > i) {
if (column['children'] == null) {
rowspan = rowspan + (i + 1);
}
}
var s = '
' + column['headerName'] + '
';
sb.appendLine(s);
});
sb.appendLine('
');
}); // 写出数据
var count = 0;
grid.api.forEachNode(function (rowNode, index) {
var row = rowNode.data;
sb.append("
");
count++;
$.each(columnsBottom, function (n, column) {
var value;
if (column['field'] == null) {
value = '';
} else {
value = row[column['field']] || '';
}
if (column['cellRenderer'] == 'htmlCellRenderer') {
value = delHtmlTag(value);
}
if (column['headerName'] == '序号') {
value = count;
}
var style = [];
if (column.type == "number") {
var options = column.numberOptions || {};
var places = options.places == undefined ? 2 : options.places;
value = parseFloat(value);
value = isNaN(value) ? 0 : value.toFixed(places);
} else if (column.form_type == 'date') {} else {
style.push('mso-number-format:\'@\'');
}
sb.appendLine('
' + value + '
');
});
sb.appendLine("
");
});
console.log("结束导出任务:" + name);
var worksheet = 'Sheet1';
var excel = sb.toString(" "); // 下载的表格模板数据
var template = '' + '' + '
' + excel + '
'; // 保存文件到本地
function saveShareContent(content, fileName) {
var downLink = document.createElement('a');
downLink.download = fileName; // 字符内容转换为blod地址
var blob = new Blob([content]);
downLink.href = URL.createObjectURL(blob); // 链接插入到页面
document.body.appendChild(downLink);
downLink.click(); // 移除下载链接
document.body.removeChild(downLink);
}
var d = new Date();
var date = [d.getFullYear(), d.getMonth() + 1, d.getDate()].join('-');
saveShareContent(template, name + "-" + date + ".xls");
}
/**
* 导出普通table成xls
* @param {*} id
* @param {*} name
*/
function LocalTableExport(id, name) {
var table = $('#' + id);
var preserveColors = table.hasClass('table2excel_with_colors') ? true : false;
var d = new Date();
var date = [d.getFullYear(), d.getMonth() + 1, d.getDate()].join('-');
table.table2excel({
exclude: ".noExl",
name: name,
filename: name + date + ".xls",
fileext: ".xls",
exclude_img: true,
exclude_links: true,
exclude_inputs: true,
preserveColors: preserveColors
});
}
/**
* 选择行政区域
*/
function regionSelect() {
var params = arguments;
var a = {
'a1': '省',
'a2': '市',
'a3': '县'
};
function getRegion(id, layer, parent_id, value) {
$.get(app.url('index/api/region', {
layer: layer,
parent_id: parent_id
}), function (res) {
var option = '';
$.map(res, function (row) {
option += '';
});
var e = $('#' + id).html(option);
if (value > 0) {
e.val(value);
}
});
}
$('#' + params[0]).on('change', function () {
getRegion(params[1], 2, this.value, 0);
$('#' + params[1]).html('');
$('#' + params[2]).html('');
});
$('#' + params[1]).on('change', function () {
getRegion(params[2], 3, this.value, 0);
$('#' + params[2]).html('');
});
getRegion(params[0], 1, 0, params[3]);
if (params[3]) {
getRegion(params[1], 2, params[3], params[4]);
if (params[4]) {
getRegion(params[2], 3, params[4], params[5]);
}
}
}
;