123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- /**
- * widget searchbox 查找框
- * @author luoyifan
- * 2018-12-01 14:00:00
- */
- "use strict";
- (function ($) {
- //默认 searchbox
- $.extend($.fn.searchbox.defaults, {
- prompt: '回车搜索',
- icons: [{
- iconCls: 'icon-clear',
- handler: function (e) {
- var $me = $(e.data.target);
- $me.textbox('clear').textbox('textbox').focus();
- if ($me.textbox('options').widget) {
- widget.clear(e);
- }
- }
- }],
- searcher: function () {
- var opts = $(this).searchbox('options');
- var option = opts.dialog || opts.widget;
- if (option) {
- widget.show(option, this);
- }
- }
- });
- })(jQuery);
- var widget = {
- show: function (option, sender) {
- var $sender = $(sender);
- var $power = $(sender).up('power');
- $power.progress();
- seajs.use([option.url], function (widgetWindowOption) {
- if ($.type(widgetWindowOption) === 'function') {
- widgetWindowOption = widgetWindowOption();
- }
- $power.progress('close');
- if ($.type(option.onBeforeShow) === 'function') {
- if (!option.onBeforeShow.call(this, sender,option, widgetWindowOption)) {
- return;
- }
- }
- //============ 展示出界面
- var $dlg = $.yvan.showDialog(sender, widgetWindowOption);
- //============ 为二级弹出初始化查询数据
- var onLoadData = option['onWidgetLoadData'] || option.bind;
- var data;
- if ($.type(onLoadData) === 'function') {
- data = onLoadData.call($sender, option);
- } else {
- var vs = onLoadData;
- var $grid = $sender.up('grid');
- var row;
- if ($grid.length > 0) {
- //表格带回值
- row = $grid.getEditRow();
- } else {
- //窗体带回值
- row = $sender.findForm().formGet();
- }
- if ($.type(vs) === "string") {
- vs = [vs];
- }
- data = {};
- if ($.type(vs) === 'array') {
- //数组,直接读取
- $.each(vs, function (index, name) {
- data[name] = row[name];
- });
- } else {
- //对象调用, 建立映射关系
- for (var prop in vs) {
- if (!vs.hasOwnProperty(prop)) continue;
- if (!row.hasOwnProperty(prop)) {
- console.log('searchbox没有属性' + prop, row);
- continue;
- }
- data[vs[prop]] = row[prop];
- }
- }
- }
- if (widgetWindowOption.hasOwnProperty('onWidgetLoadData')) {
- widgetWindowOption.onWidgetLoadData(sender, data);
- }
- //============ 二级窗确认事件
- $dlg.data({
- confirm: function (row) {
- var successOpt = option['success'] || option.bind;
- if (!successOpt) {
- //没有配置,只写自己
- if ($sender.name && row.hasOwnProperty($sender.name)) {
- $sender.searchbox('setValue', row[$sender.name]);
- return true;
- }
- }
- if ($.type(successOpt) === "function") {
- //是函数,调函数
- return successOpt.apply(this, arguments);
- }
- //字符串或数组,直接调用数组
- if ($.type(successOpt) === "string") {
- successOpt = [successOpt];
- }
- var obj = {};
- if ($.type(successOpt) === 'array') {
- //数组,根据名字逐个写入
- $.each(successOpt, function (index, name) {
- obj[name] = row[name];
- });
- } else if ($.type(successOpt) === 'object') {
- //对象,根据映射关系写入
- var vs = successOpt;
- for (var prop in vs) {
- if (!vs.hasOwnProperty(prop)) continue;
- if (!row.hasOwnProperty(vs[prop])) {
- console.error('弹出框没有属性' + vs[prop], row);
- continue;
- }
- obj[prop] = row[vs[prop]];
- }
- }
- var $grid = $sender.up('grid');
- if ($grid.length > 0) {
- //表格内编辑
- $grid.setEditRow(obj);
- } else {
- //窗体编辑
- $sender.findForm().form('load', obj);
- }
- if ($.type(option['afterConfirm']) === 'function') {
- option['afterConfirm'](obj);
- }
- return true;
- }
- });
- });
- },
- clear: function (e) {
- var $me = $(e.data.target);
- $me.textbox('clear').textbox('textbox').focus();
- if (!$me.textbox('options').widget)
- return;
- var widget = $me.textbox('options').widget;
- var clear = widget.clear || widget.bind;
- if (typeof clear === "function") {
- widget.clear();
- }
- if ($.type(clear) === "string") {
- clear = [clear];
- }
- var obj = {};
- var vs = clear;
- if ($.type(vs) === 'array') {
- //数组清空
- $.each(vs, function (index, name) {
- obj[name] = '';
- });
- } else {
- //对象,按名字清空
- for (var prop in vs) {
- if (!vs.hasOwnProperty(prop)) continue;
- obj[prop] = '';
- }
- }
- var $grid = $me.up('grid');
- if ($grid.length > 0) {
- //表格内编辑
- $grid.setEditRow(obj);
- } else {
- //窗体编辑
- $me.findForm().form('load', obj);
- }
- }
- };
|