123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385 |
- /**
- * YvanUI
- *
- * Copyright (c) 2019 www.yvanui.com. All rights reserved.
- * @author luoyifan@qq.com
- * @time 2019-03-09 14:44:00
- */
- (function ($) {
- var $dg, $footer, $dlg, $fileForm, $retry;
- var fileIdForm = $.yvan.createId('file');
- function excelWindow(opts) {
- function startImport() {
- if (!$fileForm.find('input').val()) {
- //如果文件框中无值,就选文件
- $footer.find('span').html('请选择文件');
- $fileForm.find('input').trigger('click');
- $retry.linkbutton({
- text: '选择文件',
- iconCls: 'fa fa-file-excel-o'
- });
- return;
- }
- //选好了文件,就进行上传
- $footer.find('span').html("正在导入:" + $fileForm.find('input').val() + ". 请耐心等待...");
- $retry.linkbutton({
- text: '重试',
- iconCls: 'fa fa-refresh'
- });
- var formData = new FormData($fileForm[0]);
- opts.data = $.extend(true, {
- action: 'startImport'
- }, opts.data);
- if (opts.data) {
- for (var name in opts.data) {
- if (!opts.data.hasOwnProperty(name)) continue;
- formData.append(name, opts.data[name]);
- }
- }
- $dg.datagrid('loading');
- $.yvan.ajax({
- url: opts.url,
- type: 'post',
- data: formData,
- cache: false,
- processData: false,
- contentType: false,
- success: function (root) {
- $dg.datagrid('loaded');
- $dg.datagrid('loadData', root.data || []);
- $.yvan.msg(root.msg);
- $dlg.window('close');
- if (opts.success) {
- opts.success(root.data);
- }
- },
- error: function (root, textStatus, errorThrown) {
- $dg.datagrid('loaded');
- if (textStatus !== 'success') {
- $footer.find('span').html('网络错误!!');
- return;
- }
- if ($.type(root.data) === 'array') {
- $footer.find('span').html(root.msg);
- $dg.datagrid('loadData', root.data);
- } else {
- console.error(root);
- }
- }
- });
- }
- if (!opts.columns) {
- opts.columns = [[]];
- }
- for (var i = 0; i < opts.columns[0].length; i++) {
- opts.columns[0][i].styler = (function (c) {
- return function (value, row) {
- if ($.type(row['errorCollection']) === 'object' && row['errorCollection'].hasOwnProperty(c)) {
- return 'background-color:RED;" title="' + row['errorCollection'][c].join('\n') + '" class="easyui-tooltip';
- }
- };
- })(opts.columns[0][i].field);
- }
- return {
- xtype: 'dialog',
- dialogId: $.yvan.createId('dialog'),
- title: '导入 Excel',
- width: opts.width || 700,
- height: opts.height || 500,
- onOpen: function () {
- $dlg = $(this);
- //构建 multipart-form
- $fileForm = $('<form id=' + fileIdForm + ' enctype="multipart/form-data">'
- + '<input type="file" name="file" multiple="multiple" accept="application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>'
- + '</form>');
- $dlg.append($fileForm.hide());
- $fileForm.change(function () {
- startImport();
- });
- setTimeout(function () {
- $footer.find('span').html('请选择文件');
- if (opts.autoOpen !== false) {
- startImport();
- }
- }, 0);
- },
- center: {
- border: true,
- items: {
- xtype: 'datagrid',
- onRender: function () {
- $dg = $(this);
- },
- toolbar: [
- {
- text: '选择文件', iconCls: 'fa fa-file-excel-o',
- onRender: function () {
- $retry = $(this);
- },
- onClick: function () {
- startImport();
- }
- },
- {
- text: '下载模版', iconCls: 'fa fa-download', onClick: function () {
- $.yvan.download({
- url: opts.url + '?action=template',
- fileName: opts.fileName
- });
- }
- },
- {
- text: '关闭', iconCls: 'fa fa-window-close', onClick: function () {
- $dlg.window('close');
- }
- }
- ],
- pagination: false,
- remoteSort: false,
- singleSelect: true,
- striped: true,
- rownumbers: true,
- showHeader: true,
- emptyMsg: '',
- columns: opts.columns,
- onLoadSuccess: function () {
- $(".easyui-tooltip").tooltip({
- onShow: function () {
- $(this).tooltip('tip').css({
- borderColor: 'RED'
- });
- }
- });
- },
- /*frozenColumns: [[
- {
- field: 'excelRowNum', title: '行号', width: 35,
- styler: function (value, row) {
- if ($.type(row['errorCollection']) === 'object' && row['errorCollection'].hasOwnProperty('row_error')) {
- return 'background-color:RED;" title="' + row['errorCollection']['row_error'].join('\n ') + '" class="easyui-tooltip';
- }
- }
- },
- ]],*/
- data: []
- }
- },
- footer: {
- xtype: 'div',
- onRender: function () {
- $footer = $(this);
- },
- items: [
- '<span style="color:RED; padding-left: 10px;float: left;"> </span>'
- ]
- }
- };
- }
- function excelEasyWindow(opts) {
- function startImport() {
- if (!$fileForm.find('input').val()) {
- //如果文件框中无值,就选文件
- $footer.find('span').html('请选择文件');
- $fileForm.find('input').trigger('click');
- $retry.linkbutton({
- text: '选择文件',
- iconCls: 'fa fa-file-excel-o'
- });
- return;
- }
- //选好了文件,就进行上传
- $footer.find('span').html("正在导入:" + $fileForm.find('input').val() + ". 请耐心等待...");
- $retry.linkbutton({
- text: '重试',
- iconCls: 'fa fa-refresh'
- });
- var formData = new FormData($fileForm[0]);
- opts.data = $.extend(true, {
- action: 'startImport'
- }, opts.data);
- if (opts.data) {
- for (var name in opts.data) {
- if (!opts.data.hasOwnProperty(name)) continue;
- formData.append(name, opts.data[name]);
- }
- }
- $dg.datagrid('loading');
- $.yvan.ajax({
- url: opts.url,
- type: 'post',
- data: formData,
- cache: false,
- processData: false,
- contentType: false,
- success: function (root) {
- $dg.datagrid('loaded');
- $dg.datagrid('loadData', root.data || []);
- $.yvan.msg(root.msg);
- $dlg.window('close');
- if (opts.success) {
- opts.success(root.data);
- }
- },
- error: function (root, textStatus, errorThrown) {
- $dg.datagrid('loaded');
- if (textStatus !== 'success') {
- $footer.find('span').html('网络错误!!');
- return;
- }
- if ($.type(root.data) === 'array') {
- $footer.find('span').html(root.msg);
- $dg.datagrid('loadData', root.data);
- } else {
- console.error(root);
- }
- }
- });
- }
- if (!opts.columns) {
- opts.columns = [[]];
- }
- for (var i = 0; i < opts.columns[0].length; i++) {
- opts.columns[0][i].styler = (function (c) {
- return function (value, row) {
- if ($.type(row['errorCollection']) === 'object' && row['errorCollection'].hasOwnProperty(c)) {
- return 'background-color:RED;" title="' + row['errorCollection'][c].join('\n') + '" class="easyui-tooltip';
- }
- };
- })(opts.columns[0][i].field);
- }
- return {
- xtype: 'dialog',
- dialogId: $.yvan.createId('dialog'),
- title: '导入 Excel',
- width: opts.width || 700,
- height: opts.height || 500,
- onOpen: function () {
- $dlg = $(this);
- //构建 multipart-form
- $fileForm = $('<form id=' + fileIdForm + ' enctype="multipart/form-data">'
- + '<input type="file" name="file" multiple="multiple" accept="application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>'
- + '</form>');
- $dlg.append($fileForm.hide());
- $fileForm.change(function () {
- startImport();
- });
- setTimeout(function () {
- $footer.find('span').html('请选择文件');
- if (opts.autoOpen !== false) {
- startImport();
- }
- }, 0);
- },
- center: {
- border: true,
- items: {
- xtype: 'datagrid',
- onRender: function () {
- $dg = $(this);
- },
- toolbar: [
- {
- text: '选择文件', iconCls: 'fa fa-file-excel-o',
- onRender: function () {
- $retry = $(this);
- },
- onClick: function () {
- startImport();
- }
- },
- {
- text: '关闭', iconCls: 'fa fa-window-close', onClick: function () {
- $dlg.window('close');
- }
- }
- ],
- pagination: false,
- remoteSort: false,
- singleSelect: true,
- striped: true,
- rownumbers: true,
- showHeader: true,
- emptyMsg: '',
- columns: opts.columns,
- onLoadSuccess: function () {
- $(".easyui-tooltip").tooltip({
- onShow: function () {
- $(this).tooltip('tip').css({
- borderColor: 'RED'
- });
- }
- });
- },
- /*frozenColumns: [[
- {
- field: 'excelRowNum', title: '行号', width: 35,
- styler: function (value, row) {
- if ($.type(row['errorCollection']) === 'object' && row['errorCollection'].hasOwnProperty('row_error')) {
- return 'background-color:RED;" title="' + row['errorCollection']['row_error'].join('\n ') + '" class="easyui-tooltip';
- }
- }
- },
- ]],*/
- data: []
- }
- },
- footer: {
- xtype: 'div',
- onRender: function () {
- $footer = $(this);
- },
- items: [
- '<span style="color:RED; padding-left: 10px;float: left;"> </span>'
- ]
- }
- };
- }
- $.extend($.yvan, {
- importExcel: function ($sender, opts) {
- opts = excelWindow(opts);
- return $.yvan.showDialog($sender, opts);
- }
- });
- $.extend($.yvan, {
- importEasyExcel: function ($sender, opts) {
- opts = excelEasyWindow(opts);
- return $.yvan.showDialog($sender, opts);
- }
- });
- })(jQuery);
|