Explorar o código

新增报告预览新窗口

loki.wu %!s(int64=2) %!d(string=hai) anos
pai
achega
22b583c400

+ 1 - 0
fis/Helpers/AvaloniaCefBrowserHelper.cs

@@ -1,5 +1,6 @@
 using Avalonia.Controls;
 using fis.Mac;
+using fis.Win.Dev.Utilities;
 using System;
 using System.Collections.Generic;
 using System.Linq;

+ 10 - 0
fis/IPlatformService.cs

@@ -56,6 +56,16 @@ namespace fis
         /// <returns></returns>
         bool OpenReportEdit(string token, string patientCode, string reportCode, string recordCode);
 
+        /// <summary>
+        /// 打开报告预览
+        /// </summary>
+        /// <param name="token"></param>
+        /// <param name="patientCode"></param>
+        /// <param name="reportCode"></param>
+        /// <param name="recordCode"></param>
+        /// <returns></returns>
+        bool OpenReportPreview(string token,  string reportCode, string recordCode);
+
         /// <summary>
         /// 打开报告模板设计器
         /// </summary>

+ 0 - 93
fis/MainWindow.axaml.cs

@@ -123,97 +123,4 @@ namespace fis
             manager.Dispose();
         }
     }
-
-    internal class FisBrowserScriptObject
-    {
-        IPlatformService _platformService;
-        TextBlock _title;
-        internal FisBrowserScriptObject(TextBlock title, IPlatformService platformService)
-        {
-            _title = title;
-            _platformService = platformService;
-        }
-
-        /// <summary>
-        /// 获取平台名
-        /// </summary>
-        /// <returns></returns>
-        public string GetPlatformName() => _platformService.GetPlatformName();
-
-        /// <summary>
-        /// 写日志
-        /// </summary>
-        /// <param name="message"></param>
-        /// <returns></returns>
-        public void WriteLog(string message) => Logger.Write(message);
-
-        /// <summary>
-        /// 保存报告模板
-        /// </summary>
-        /// <param name="templateId"></param>
-        /// <param name="name"></param>
-        /// <param name="useObject"></param>
-        /// <param name="templateJson"></param>
-        public void SaveTemplate(string templateId, string name, string useObject, string templateJson)
-        {
-            List<string> args = new List<string>();
-            args.Add(templateId);
-            args.Add(name);
-            args.Add(useObject);
-            args.Add(templateJson);
-            ExecuteJS("externalNotification", TargetMethodName.SaveReportTemplate, args);
-        }
-
-
-        /// <summary>
-        /// 执行Js方法
-        /// </summary>
-        /// <param name="methodName"></param>
-        /// <param name="targetMethodName"></param>
-        /// <param name="arguments"></param>
-        private void ExecuteJS(string methodName, TargetMethodName targetMethodName, List<string> arguments)
-        {
-            string callString = methodName + "(";
-            if (arguments != null)
-            {
-                string comma = ", ";
-                var argumentsStr = "";
-                int index = 0;
-                foreach (var e in arguments)
-                {
-                    if (index == arguments.Count - 1)
-                    {
-                        argumentsStr += e;
-                    }
-                    else
-                    {
-                        argumentsStr += e + "&";
-                    }
-                    index++;
-                }
-                var escaped = System.Web.HttpUtility.JavaScriptStringEncode(argumentsStr, true);
-                callString += (int)targetMethodName + comma + escaped;
-            }
-            callString += ");";
-
-            AvaloniaCefBrowserHelper.browser?.ExecuteJavaScript(callString, null, 0);
-        }
-
-        /// <summary>
-        /// 设置窗体标题
-        /// </summary>
-        /// <param name="title">标题</param>
-        public void SetTitle(string title)
-        {
-            MainWindow.MainThreadSyncContext?.Send(new SendOrPostCallback((args) =>
-            {
-                if(_title != null)
-                {
-                    _title.Text = title;
-                }
-            }), this);
-        }
-
-        public int Age { get; set; }
-    }
 }

+ 13 - 0
fis/PlatformService.cs

@@ -67,6 +67,17 @@ namespace fis
             return true;
         }
 
+        public bool OpenReportPreview(string token, string reportCode, string recordCode)
+        {
+            var dictionary = new Dictionary<string, string>();
+            dictionary.Add("token", token);
+            dictionary.Add("reportCode", reportCode);
+            dictionary.Add("recordCode", recordCode);
+            var manager = AppManager.Get<ISecondaryScreenManager>();
+            manager.ShowWindowByTypeAsync(WindowType.ReportEdit, "http://" + ShellConfig.Instance.AppHost + "/#/remedical/report/report_edit", dictionary).GetAwaiter().GetResult();
+            return true;
+        }
+
         /// <summary>
         /// 打开报告设计器
         /// </summary>
@@ -190,5 +201,7 @@ namespace fis
             var fileStorageManager = AppManager.Get<IFileStorageManager>();
             return fileStorageManager.SetBinaryFileCache(data, fileName).Result;
         }
+
+
     }
 }

+ 8 - 2
fis/SlaveWindow.axaml.cs

@@ -77,7 +77,13 @@ namespace fis
                 targetMethodName = TargetMethodName.OpenMeasurePage;
             }
             else {
-                targetMethodName = TargetMethodName.OpenReportEditPage;
+                if (arguments.Count == 3) {
+                    targetMethodName = TargetMethodName.OpenReportPreviewPage;
+                }
+                else
+                {
+                    targetMethodName = TargetMethodName.OpenReportEditPage;
+                }
             }
             ExecuteJS("externalNotification", targetMethodName, arguments);
             Show();
@@ -171,7 +177,7 @@ namespace fis
                 var appHandler = new FileSystemHostHandler(ShellConfig.Instance.AppHost, ShellConfig.Instance.AppResourcePath);
                 var resourceHandler = new FileSystemHostHandler(ShellConfig.Instance.LocalResourceHost, ShellConfig.Instance.LocalResourcePath);
                 var handler = new HostRequestHandler();
-                //  handler.RegisterHostHandler(resourceHandler);
+                // handler.RegisterHostHandler(resourceHandler);
                 handler.RegisterHostHandler(appHandler);
                 _browser = new AvaloniaCefBrowser
                 {

+ 125 - 0
fis/Utilities/FisBrowserScriptObject.cs

@@ -0,0 +1,125 @@
+using Avalonia.Controls;
+using Avalonia.Threading;
+using fis.Log;
+using fis.Managers;
+using fis.Win.Dev.Helpers;
+using fis.Win.Dev.Managers.Interfaces;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace fis.Win.Dev.Utilities
+{
+    internal class FisBrowserScriptObject
+    {
+        IPlatformService _platformService;
+        TextBlock _title;
+        internal FisBrowserScriptObject(TextBlock title, IPlatformService platformService)
+        {
+            _title = title;
+            _platformService = platformService;
+        }
+
+        /// <summary>
+        /// 获取平台名
+        /// </summary>
+        /// <returns></returns>
+        public string GetPlatformName() => _platformService.GetPlatformName();
+
+        /// <summary>
+        /// 写日志
+        /// </summary>
+        /// <param name="message"></param>
+        /// <returns></returns>
+        public void WriteLog(string message) => Logger.Write(message);
+
+        /// <summary>
+        /// 保存报告模板
+        /// </summary>
+        /// <param name="templateId"></param>
+        /// <param name="name"></param>
+        /// <param name="useObject"></param>
+        /// <param name="templateJson"></param>
+        public void SaveTemplate(string templateId, string name, string useObject, string templateJson)
+        {
+            List<string> args = new List<string>();
+            args.Add(templateId);
+            args.Add(name);
+            args.Add(useObject);
+            args.Add(templateJson);
+            ExecuteJS("externalNotification", TargetMethodName.SaveReportTemplate, args);
+        }
+
+
+        /// <summary>
+        /// 执行Js方法
+        /// </summary>
+        /// <param name="methodName"></param>
+        /// <param name="targetMethodName"></param>
+        /// <param name="arguments"></param>
+        private void ExecuteJS(string methodName, TargetMethodName targetMethodName, List<string> arguments)
+        {
+            string callString = methodName + "(";
+            if (arguments != null)
+            {
+                string comma = ", ";
+                var argumentsStr = "";
+                int index = 0;
+                foreach (var e in arguments)
+                {
+                    if (index == arguments.Count - 1)
+                    {
+                        argumentsStr += e;
+                    }
+                    else
+                    {
+                        argumentsStr += e + "&";
+                    }
+                    index++;
+                }
+                var escaped = System.Web.HttpUtility.JavaScriptStringEncode(argumentsStr, true);
+                callString += (int)targetMethodName + comma + escaped;
+            }
+            callString += ");";
+
+            AvaloniaCefBrowserHelper.browser?.ExecuteJavaScript(callString, null, 0);
+        }
+
+        /// <summary>
+        /// 设置窗体标题
+        /// </summary>
+        /// <param name="title">标题</param>
+        public void SetTitle(string title)
+        {
+            MainWindow.MainThreadSyncContext?.Send(new SendOrPostCallback((args) =>
+            {
+                if (_title != null)
+                {
+                    _title.Text = title;
+                }
+            }), this);
+        }
+
+        public void CloseWindow(WindowType windowType)
+        {
+            var manager = AppManager.Get<ISecondaryScreenManager>();
+             Dispatcher.UIThread.InvokeAsync(() =>
+             {
+                 var slaveWindow = manager.GetWindowByType(windowType);
+                 slaveWindow?.Close();
+
+             });
+        }
+
+        public void RefershReports() 
+        {
+            CloseWindow(WindowType.ReportEdit);
+            ExecuteJS("externalNotification",TargetMethodName.RefershReports, new List<string>());
+        }
+
+        public int Age { get; set; }
+    }
+}

+ 2 - 0
fis/Utilities/TargetMethodName.cs

@@ -5,5 +5,7 @@
         SaveReportTemplate,
         OpenMeasurePage,
         OpenReportEditPage,
+        RefershReports,
+        OpenReportPreviewPage,
     }
 }