Beispiel #1
0
 /// <summary>
 /// 注册消息
 /// </summary>
 private void Register()
 {
     Messenger.Default.Register <string>(this, EnumMessageKey.QuickChangeDoc, newDocName =>
     {
         try
         {
             WhirlingControlManager.ShowWaitingForm();
             // 快速切换文书
             if (!string.IsNullOrEmpty(newDocName) &&
                 this.CheckDocData() &&
                 this.LoadDoc(newDocName))
             {
                 keyBoardMessageLock = false;
                 Messenger.Default.Send <string>(newDocName, EnumMessageKey.ResetLoadReport);
             }
         }
         catch (Exception ex)
         {
             Logger.Error("快速切换文书错误", ex);
         }
         finally
         {
             WhirlingControlManager.CloseWaitingForm();
         }
     });
 }
Beispiel #2
0
        /// <summary>
        /// 在快速切换前判断数据是否需要保存
        /// </summary>
        private bool SaveBeforeChangeOperEvent()
        {
            bool result = true;

            // 检查数据是否修改过 以及判断数据是否完整
            if (this.CheckDataChange() && this.CheckData())
            {
                ShowMessageBox("当前数据有修改,是否保存数据?",
                               MessageBoxButton.YesNoCancel,
                               MessageBoxImage.Question,
                               new Action <MessageBoxResult>((r) =>
                {
                    // 是or否 跳转,取消
                    if (r == MessageBoxResult.Yes || r == MessageBoxResult.OK)
                    {
                        SaveResult saveResult = SaveResult.Success;
                        try
                        {
                            WhirlingControlManager.ShowWaitingForm();
                            saveResult = SaveData();
                        }
                        finally
                        {
                            WhirlingControlManager.CloseWaitingForm();
                        }
                        if (saveResult == SaveResult.Fail)
                        {
                            ShowMessageBox("数据保存失败。", MessageBoxButton.OK, MessageBoxImage.Error);
                            result = false;
                        }
                    }
                    else if (r == MessageBoxResult.No)
                    {
                        result = true;
                    }
                    else if (r == MessageBoxResult.Cancel)
                    {
                        result = false;
                    }
                }));
            }

            return(result);
        }
Beispiel #3
0
        /// <summary>
        /// 键盘响应公共消息,Home,Back,Save,Delete等等
        /// </summary>
        protected virtual void PublicKeyBoardMessage(string keyCode)
        {
            // 按键响应屏蔽多次响应
            if ((keyCode == KeyCode.AppCode.Delete ||
                 keyCode == KeyCode.AppCode.Save ||
                 keyCode == KeyCode.AppCode.Back) && keyBoardMessageLock)
            {
                return;
            }

            // 如果按键是 新增事件 按键,则按键锁无需打开
            if (keyCode != KeyCode.AppCode.Insert ||
                keyCode == KeyCode.AppCode.HOME)
            {
                keyBoardMessageLock = true;
            }

            try
            {
                WhirlingControlManager.ShowWaitingForm();
                switch (keyCode)
                {
                case KeyCode.AppCode.Insert:
                    InsertData();
                    break;

                case KeyCode.AppCode.Delete:
                    if (ExtendAppContext.Current.IsModify && ExtendAppContext.Current.IsPermission)
                    {
                        DeleteData();
                    }
                    else
                    {
                        ShowMessageBox("术后患者或非当前手术间患者,无法修改。", MessageBoxButton.OK, MessageBoxImage.Warning);
                    }
                    break;

                case KeyCode.AppCode.Save:
                    if (ExtendAppContext.Current.IsModify && ExtendAppContext.Current.IsPermission)
                    {
                        if (CheckData())    //检查数据是否完整
                        {
                            //此处省略检查数据是否修改过,既然点击保存就执行保存操作
                            SaveResult saveResult = SaveData();
                            if (saveResult == SaveResult.Fail)
                            {
                                ShowMessageBox("数据保存失败。", MessageBoxButton.OK, MessageBoxImage.Error);
                            }
                            else if (saveResult == SaveResult.Success)
                            {
                                ShowMessageBox("数据保存成功。", MessageBoxButton.OK, MessageBoxImage.Information);
                                IsSaved = true;
                            }
                            else if (saveResult == SaveResult.CancelMessageBox)
                            {
                                IsSaved = true;
                            }
                            if (IsSaved)
                            {
                                this.CloseContentWindow();
                                Messenger.Default.Send <object>(this, EnumMessageKey.RefreshInOperationWindow);
                            }
                        }
                    }
                    else
                    {
                        ShowMessageBox("术后患者或非当前手术间患者,无法修改。", MessageBoxButton.OK, MessageBoxImage.Warning);
                    }
                    break;

                case KeyCode.AppCode.HOME:
                    this.CloseContentWindow();
                    Messenger.Default.Send <object>(this, EnumMessageKey.CloseInOperationWindow);
                    break;

                case KeyCode.AppCode.Back:
                    KeyBack();
                    break;
                }
            }
            catch (Exception ex)
            {
                WhirlingControlManager.CloseWaitingForm();
                Logger.Error("程序异常", ex);
                ShowMessageBox(ex.Message, MessageBoxButton.OK, MessageBoxImage.Warning);
            }
            finally
            {
                WhirlingControlManager.CloseWaitingForm();
                if (keyCode != KeyCode.AppCode.Insert)
                {
                    keyBoardMessageLock = false;
                }
            }
        }
Beispiel #4
0
        /// <summary>
        /// 卸载窗口
        /// </summary>
        public virtual void OnPreviewViewUnLoaded(CancelEventArgs e)
        {
            // 已经保存过了
            if (IsSaved)
            {
                return;
            }

            try
            {
                if (ExtendAppContext.Current.IsModify && ExtendAppContext.Current.IsPermission)
                {
                    if (CheckDataChange()) //检查数据是否修改过
                    {
                        if (CheckData())   //检查数据是否完整
                        {
                            keyBoardMessageLock = true;
                            ShowMessageBox("当前数据有修改,是否保存数据?",
                                           MessageBoxButton.YesNoCancel,
                                           MessageBoxImage.Question,
                                           new Action <MessageBoxResult>((r) =>
                            {
                                if (r == MessageBoxResult.Yes || r == MessageBoxResult.OK)
                                {
                                    SaveResult saveResult = SaveResult.Success;
                                    try
                                    {
                                        WhirlingControlManager.ShowWaitingForm();
                                        saveResult = SaveData();
                                    }
                                    finally
                                    {
                                        WhirlingControlManager.CloseWaitingForm();
                                    }
                                    if (saveResult == SaveResult.Fail)
                                    {
                                        ShowMessageBox("数据保存失败。", MessageBoxButton.OK, MessageBoxImage.Error);
                                    }
                                }
                                else if (r == MessageBoxResult.No)
                                {
                                }
                                else
                                {
                                    keyBoardMessageLock = false;
                                    e.Cancel            = true;
                                }
                            }));
                        }
                        else
                        {
                            // 检查数据不完整,并且有修改 不关闭窗口
                            keyBoardMessageLock = false;
                            e.Cancel            = true;
                        }
                    }
                }

                // 关闭窗口时,清除当前打开窗体对象
                if (!e.Cancel)
                {
                    ExtendAppContext.Current.CurrentDocName = string.Empty;// 文书加载也清空
                    this.ResetCurntOpenForm();
                    Messenger.Default.Unregister <string>(this);
                    Messenger.Default.Send <object>(this, EnumMessageKey.RefreshInOperationWindow);
                }
            }
            catch (Exception ex)
            {
                Logger.Error("程序异常", ex);
                ShowMessageBox("系统异常,中断该操作", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }
Beispiel #5
0
        /// <summary>
        /// 初始化
        /// </summary>
        private void BaseUserControl_Loaded(object sender, RoutedEventArgs e)
        {
            var vm = this.DataContext as BaseViewModel;

            if (vm != null)//ViewModel基类统一加载
            {
                if (this.Close != null)
                {
                    vm.CloseContentWindowDelegate = this.Close;
                }

                try
                {
                    if (!(this is MedicalSystem.AnesWorkStation.View.ToolBar.BottomMenu) &&
                        !(this is MedicalSystem.AnesWorkStation.View.OperationInformation.OperationInterfaceControl))
                    {
                        WhirlingControlManager.ShowWaitingForm();
                    }
                    vm.RegisterKeyBoardMessage();
                    this.Unloaded += (s1, e1) => vm.OnViewUnLoaded();
                    vm.OnViewLoaded();
                    vm.LoadData();
                    if (ParentWindow != null)
                    {
                        if (ParentWindow is ContentWindow)
                        {
                            ParentWindow.Closing += (s1, e1) =>
                            {
                                if (!(ParentWindow as ContentWindow).IsAnimationCloseWindow)
                                {
                                    vm.OnPreviewViewUnLoaded(e1);
                                }

                                if ((ParentWindow as ContentWindow).ClosingAction != null)
                                {
                                    (ParentWindow as ContentWindow).ClosingAction(s1, e1);
                                }
                            };
                        }
                        else
                        {
                            ParentWindow.Closing += (s1, e1) => vm.OnPreviewViewUnLoaded(e1);
                        }

                        ParentWindow.Deactivated += Control_LostFocus;//响应点击其他地方关闭窗口操作
                    }
                }
                catch (Exception ex)
                {
                    WhirlingControlManager.CloseWaitingForm();
                    Logger.Error("程序异常", ex);
                    vm.ShowMessageBox(ex.Message, MessageBoxButton.OK, MessageBoxImage.Warning);
                }
                finally
                {
                    WhirlingControlManager.CloseWaitingForm();
                }
            }
            if (this.ParentWindow != null)
            {
                this.ParentWindow.Activate();
            }
        }