Browse Source

关闭二次确认

zhuth 7 years ago
parent
commit
f12ee4af0d

+ 15 - 0
frontend/saas-web/app/view/core/form/field/DetailGridField.js

@@ -362,6 +362,21 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
         return valid;
     },
 
+    isDirty: function() {
+        var me = this,
+        store = me.getStore(),
+        dataItems = store.data.items;
+
+        for(var i = 0; i < dataItems.length; i++) {
+            var item = dataItems[i];
+            if(item.dirty) {
+                return true;
+            }
+        }
+
+        return false;
+    },
+
     /**
      * 获得所有数据
      */

+ 41 - 3
frontend/saas-web/app/view/core/tab/Controller.js

@@ -16,13 +16,51 @@ Ext.define('saas.view.core.tab.Controller', {
         tab.tabView = tab.add(view);
     },
 
-    onTabChange: function() {
+    onTabChange: function(component) {
         var me = this,
-        tab = me.getView(),
-        tabView = tab.tabView;
+        tabPanel = me.getView(),
+        tabView = tabPanel.tabView;
 
         if(typeof tabView.refresh == 'function') {
             tabView.refresh();
         }
+
+        if(!component.resetCloseClick) {
+            component.tab.onCloseClick = function() {
+                var me = this;
+         
+                if (me.fireEvent('beforeclose', me) !== false) {
+                    if (me.tabBar) {
+                        if(typeof tabView.isDirty == 'function' && tabView.isDirty()) {
+                            showConfirm('提示', '表单数据有修改,确定要退出吗?')
+                            .then(function(yes) {
+                                if(yes == 'yes') {
+                                    if (me.tabBar.closeTab(me) === false) {
+                                        return;
+                                    }
+                                }
+                            });
+                        }else {
+                            if (me.tabBar.closeTab(me) === false) {
+                                return;
+                            }
+                        }
+                    } else {
+                        if(typeof tabView.isDirty == 'function' && tabView.isDirty()) {
+                            showConfirm('提示', '表单数据有修改,确定要退出吗?')
+                            .then(function(yes) {
+                                if(yes == 'yes') {
+                                    me.fireClose();
+                                }
+                            });
+                        }else {
+                            me.fireClose();
+                        }
+                    }
+                }
+            }
+
+            component.resetCloseClick = true;
+        }
     }
 });

+ 8 - 0
frontend/saas-web/overrides/i18n.js

@@ -60,6 +60,14 @@ function getCurrentTab() {
     return currentTab;
 }
 
+function showConfirm(title, message) {
+    return new Ext.Promise(function (resolve, reject) {
+        Ext.MessageBox.confirm(title, message, function(buttonId) {
+            return resolve(buttonId);
+        });
+    })
+}
+
 function warnMsg(msg, fn){
 	Ext.MessageBox.show({
      	title: '提示',