Browse Source

auto commit 2.1.7

lith 3 years ago
parent
commit
beed777101

+ 115 - 55
dotnet/ServiceCenter/App.Gover.Gateway/wwwroot/JsStation/JsStation.html

@@ -1,24 +1,105 @@
 <!DOCTYPE html>
 
-<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
+<html lang="zh-cn" xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <meta charset="utf-8" />
-    <title>Sers-JsStation</title>
+    <title>Sers-JsStation</title>   
+
+</head>
+<body>
+    <h2>Sers-JsStation</h2>
+    <div>
+
+        <textarea type="text" id="txt_log" rows="13" cols="200">
+说明:
+请在ServiceCenter配置文件中开启websocket通信,并修改对应的端口号和secretKey
+
+</textarea><br />
+        <input type="button" onclick="startService()" value="启动服务" />
+        <input type="button" onclick="stopService()" value="关闭服务" />
+        <input type="button" onclick="txt_log.value = ''" value="清空" /> <br />
+
+        <table>
+            <tr><td>appsettings:</td><td>api:</td><td>调用接口:<input type="button" onclick="callApi()" value="执行" /> </td></tr>
+            <tr>
+                <td>
+<textarea type="text" id="txt_appsettings" rows="30" cols="40"></textarea>
+                </td>
+                <td>
+<textarea type="text" id="txt_apiNodes" rows="30" cols="80">
+[
+
+{
+    route: '/JsStation/api1', httpMethod: 'GET', apiName: 'js作为服务站点',
+    onInvoke: function (requestData_bytes, rpcData, reply_rpcData) {
+        var request_string = vit.bytesToString(requestData_bytes);
+        vit.logger.info('[api调用] request:' + request_string );
+        var replyData = {
+            success: true,
+            data:
+            {
+                request_string: request_string,
+                _: Math.random()
+            }
+        };
+        return vit.objectSerializeToBytes(replyData);
+    }
+}
+
+
+
+
+]
+</textarea>
+                </td>
+                <td>
+<textarea type="text" id="txt_callApi" rows="30" cols="80">
+serviceStation.apiClient.callApi("/JsStation/api1", {name:'sers'}, 'GET',
+function (isSuccess, replyData_bytes, replyRpcData_object) {
+    if (!isSuccess) {
+        vit.logger.info("接口调用失败!");
+        return;
+    }
+    //var apiRet = vit.bytesToObject(replyData_bytes); 
+    var str = vit.bytesToString(replyData_bytes);
+    vit.logger.info("接口调用成功。 reply:" + vit.bytesToString(replyData_bytes));
+});
+
+
+</textarea>
+                </td>
+            </tr>
+        </table>
+
+
+
+    </div>
 
     <script src="sers.ServiceStation.min.js"></script>
     <script>
 
+        var appsettings =
+        {
+            CL: {
+                host: 'ws://' + (location.hostname || '127.0.0.1') + ':4503',
+                secretKey: 'SersCL'
+            },
+            serviceStationInfo: {
+                serviceStationName: 'JsStation',
+                serviceStationKey: '',
+                stationVersion: '',
+                info: {}
+            }
+        };
 
-        //var clConfig = { host: 'ws://0.0.0.0:4503', secretKey: 'SersCL' };
-        var clConfig = { host: 'ws://' + location.hostname + ':4503', secretKey: 'SersCL' };
+        txt_appsettings.value = JSON.stringify(appsettings, null, 2);
 
-        var serviceStation = new sers.ServiceStation();
 
+        var serviceStation = new sers.ServiceStation();
 
         /*
            user_ApiNode demo:
-          //onInvoke:   function(requestData_bytes,rpcData_object,reply_rpcData_object){}
-
+           //onInvoke:   function(requestData_bytes,rpcData_object,reply_rpcData_object){}
             {
                 route: '/JsStation/api1', httpMethod: 'GET', apiName: 'js作为服务站点',
                 onInvoke: function (requestData_bytes, rpcData, reply_rpcData) {
@@ -44,10 +125,13 @@
         };
 
 
-        function reloadApiNode() {
+        function startService() {
             try {
-                vit.logger.info('加载api...');
+                vit.logger.info('');
+                vit.logger.info('--------------------------------------------');
 
+                //(x.1)
+                vit.logger.info('加载api...');
                 var str_apiNodes = txt_apiNodes.value;
                 var user_apiNodes = eval('(' + str_apiNodes + ')');
                 serviceStation.localApiService.clearApiNodes();
@@ -58,23 +142,20 @@
                 }
                 vit.logger.info('api已加载,数量:' + user_apiNodes.length);
 
-            } catch (e) {
-                vit.logger.error(e);
-            }
-        }
 
+                //(x.2)appsettings
+                appsettings = eval('(' + txt_appsettings.value + ')');
 
-        function startService() {
-            try {
+                //设置websocket host 地址
+                serviceStation.org.setHost(appsettings.CL.host);
 
-                //设置websocket host 地址 demo: "ws://127.0.0.1:4503"
-                //serviceStation.org.setHost("ws://127.0.0.1:4503");
-                serviceStation.org.setHost(clConfig.host);
+                //连接秘钥,用以验证连接安全性。服务端和客户端必须一致
+                serviceStation.org.secretKey = appsettings.CL.secretKey;
 
+                serviceStation.serviceStationInfo = appsettings.serviceStationInfo;
 
-                //连接秘钥,用以验证连接安全性。服务端和客户端必须一致
-                serviceStation.org.secretKey = clConfig.secretKey;
 
+                //(x.3)连接
                 serviceStation.start();
             } catch (e) {
                 vit.logger.error(e);
@@ -83,49 +164,28 @@
 
         function stopService() {
             try {
+                vit.logger.info('');
+                vit.logger.info('--------------------------------------------');
+                vit.logger.info('断开连接...');
                 serviceStation.stop();
+                vit.logger.info('连接已断开');
             } catch (e) {
                 vit.logger.error(e);
             }
         }
-    </script>
 
-</head>
-<body>
-    <h1>Sers-JsStation</h1>
-    <div>
-
-        <textarea type="text" id="txt_log" rows="10" cols="200"></textarea>
-        <br /><input type="button" onclick="reloadApiNode()" value="加载api" />
-        <input type="button" onclick="startService()" value="启动服务" />
-        <input type="button" onclick="stopService()" value="关闭服务" /><br />
-                                                                    <textarea type="text" id="txt_apiNodes" rows="40" cols="200">
-[
+        function callApi() {
+            try {
+                vit.logger.info('');
+                vit.logger.info('--------------------------------------------');
+                vit.logger.info('调用接口...');
 
-{
-    route: '/JsStation/api1', httpMethod: 'GET', apiName: 'js作为服务站点',
-    onInvoke: function (requestData_bytes, rpcData, reply_rpcData) {
-        var request_string = vit.bytesToString(requestData_bytes);
-        vit.logger.info('[api调用] request:' + request_string );
-        var replyData = {
-            success: true,
-            data:
-            {
-                request_string: request_string,
-                _: Math.random()
+                eval(txt_callApi.value);
+            } catch (e) {
+                vit.logger.error(e);
             }
-        };
-        return vit.objectSerializeToBytes(replyData);
-    }
-}
-
-
-
-
-
+        }
 
-]
-</textarea>
-    </div>
+    </script>
 </body>
 </html>

+ 33 - 24
dotnet/ServiceCenter/App.Gover.Gateway/wwwroot/JsStation/sers.ServiceStation.js

@@ -1,12 +1,13 @@
 /*
- * sers.ServiceStation.js 扩展  
- * Date   : 2020-07-22
- * Version: 2.1.1.372
+ * sers.ServiceStation.js 扩展
+ * Date   : 2021-07-14
+ * Version: 2.1.7
  * author : Lith
  * email  : serset@yeah.net
+ * 压缩   : http://javascriptcompressor.com/
  */
 
-; var sers = { version: '2.1.1.372' };
+; var sers = { version: '2.1.7' };
 
 /*
  * vit.js 扩展
@@ -204,7 +205,7 @@
 
         logger.error = function (e, message) {
             console.log(e);
-            var msgOut = new Date().pattern("[mm:ss.S]") + '[error]' + message;
+            var msgOut = new Date().pattern("[mm:ss.S]") + '[error]' + (message||e.message||'出错');
             console.log(msgOut);
             try {
                 if (logger.onmessage) logger.onmessage(msgOut);
@@ -321,6 +322,7 @@
         self.event_onDisconnected;
 
         self.sendFrame = function (bytes) {
+            if (!webSocket) throw new Error('连接尚未建立,无法发送数据,请先建立连接');
             vit.bytesInsertInt32(bytes, 0, bytes.length);
             var dataView = vit.bytesToDataView(bytes);
             webSocket.send(dataView);
@@ -332,11 +334,12 @@
 
         //callback: function(isConnected){ }
         self.connect = function (callback) {
+            if (webSocket) throw new Error('连接尚未断开,不可再次连接');
 
             webSocket = new WebSocket(self.host);
             webSocket.binaryType = "arraybuffer";
 
-            webSocket.onerror = function (ev) {
+            webSocket.onerror = function (event) {
                 self.close();
             };
 
@@ -375,16 +378,16 @@
 
 
         self.close = function () {
-            if (!webSocket) return;
+            if (!webSocket) throw new Error('尚未建立连接,无需断开');
 
 
             //(x.1) close socket
-            try {
-                webSocket.close();
-                webSocket = null;
-            } catch (e) {
-                logger.error(e);
+			try {
+				webSocket.close();
+			} catch (e) {
+				logger.error(e);
             }
+            webSocket = null;
 
             logger.info('[sers.CL]DeliveryClient.event_onDisconnected');
 
@@ -508,7 +511,7 @@
                 if (callback)
                     callback(replyData, isSuccess);
             };
-            setTimeout(onCall, 10000);
+            setTimeout(onCall, 60000);
 
             organizeToDelivery_RequestMap[reqKey] = function (replyData) { onCall(replyData, true); };
 
@@ -904,13 +907,22 @@
             self.apiClient = new sers.ApiClient(self.org);
         })();
 
+        //(x.4)
         self.stop = function () {
             logger.info('[sers.ServiceStation]try stop...');
             self.org.stop();
             logger.info('[sers.ServiceStation] stoped.');
         };
 
+        //(x.5)
+        self.serviceStationInfo = {
+            serviceStationName: 'JsStation', serviceStationKey: '', stationVersion: '', info: {}
+        };
+
+        //(x.6)
+        var deviceInfo = { deviceKey: ('' + Math.random()).substr(2) };
 
+        //(x.7)
         //callback: function(isSuccess){}
         self.start = function (callback) {
 
@@ -926,18 +938,14 @@
 
                 //向服务中心注册localApiService
                 logger.info('[ServiceStation] regist serviceStation to ServiceCenter...');
-                var serviceStationInfo = {
-                    serviceStationName: 'JsStation', serviceStationKey: '', stationVersion: '', info: {}
-                };
-                var deviceInfo = { deviceKey: '' + Math.random() };
+                
                 var apiNodes = self.localApiService.getApiNodes();
 
-                var serviceStationData =
-                {
-                    serviceStationInfo: serviceStationInfo,
-                    deviceInfo: deviceInfo,
-                    apiNodes: apiNodes
-                };
+				var serviceStationData = {
+					serviceStationInfo: self.serviceStationInfo,
+					deviceInfo: deviceInfo,
+					apiNodes: apiNodes
+				};
 
                 //(string route, object arg, string httpMethod, function callback)
                 //callback: function(isSuccess,replyData_bytes,replyRpcData_object)
@@ -952,8 +960,9 @@
                     var apiRet = vit.bytesToObject(replyData_bytes);
 
                     if (!apiRet.success) {
-                        logger.info("[ServiceStation] regist - failed. reply:" + vit.bytesToString(replyData));
+                        logger.info("[ServiceStation] regist - failed. reply:" + vit.bytesToString(replyData_bytes));
                         if (callback) callback(false);
+                        return;
                     }
                     logger.info("[ServiceStation] regist - succeed");
                     if (callback) callback(true);

File diff suppressed because it is too large
+ 2 - 2
dotnet/ServiceCenter/App.Gover.Gateway/wwwroot/JsStation/sers.ServiceStation.min.js


+ 7 - 7
dotnet/ServiceCenter/App.Gover.Gateway/wwwroot/_gover_/ActiveApiDoc.html

@@ -43,7 +43,7 @@
         <nav class="navbar navbar-expand-md navbar-light">
 
             <!-- Company name shown on mobile -->
-            <a class="navbar-brand d-md-none d-lg-none d-xl-none" href="#"><span> Sers </span> Dashboard </a>
+            <a class="navbar-brand d-md-none d-lg-none d-xl-none" href><span> Sers </span> Dashboard </a>
 
             <!-- Mobile menu toggle -->
             <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#mainNavbar" aria-controls="mainNavbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -83,7 +83,7 @@
 
 
                     <li class="nav-item dropdown">
-                        <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Ext</a>
+                        <a class="nav-link dropdown-toggle" data-toggle="dropdown" href role="button" aria-haspopup="true" aria-expanded="false">Ext</a>
                         <div class="dropdown-menu navbar-dark bg-primary">
                             <a class="dropdown-item" href="/JsStation/JsStation.html">JsStation</a>
                             <a class="dropdown-item" href="/MicroControl/mc.html">MicroControl</a>
@@ -110,19 +110,19 @@
 
                 postman导入文件(用以导入接口至postman):
                 <br />&nbsp; &nbsp; &nbsp; &nbsp;
-                <a id="postmanCollection" href="#" title="download postman collection File">下载postmanCollection</a> |
-                <a id="postmanEnvironment" href="#" title="download postman environment File">下载postmanEnvironment</a>
+                <a id="postmanCollection" href title="download postman collection File">下载postmanCollection</a> |
+                <a id="postmanEnvironment" href title="download postman environment File">下载postmanEnvironment</a>
                 <br />
 
                 postmanWeb:
                 <br />&nbsp; &nbsp; &nbsp; &nbsp;
-                <a href="#" onclick="openPostmanWeb(false)">打开postmanWeb</a> |
-                <a href="#" onclick="openPostmanWeb(true)">打开postmanWeb并加载当前api</a>
+                <a href onclick="openPostmanWeb(false)">打开postmanWeb</a> |
+                <a href onclick="openPostmanWeb(true)">打开postmanWeb并加载当前api</a>
                 <br />
 
                 markdown文档:
                 <br />&nbsp; &nbsp; &nbsp; &nbsp;
-                <a id="mdDownload" href="#" title="download markdown document file">下载markdown文档</a>
+                <a id="mdDownload" href title="download markdown document file">下载markdown文档</a>
 
             </div>
         </div>

+ 7 - 7
dotnet/ServiceCenter/App.Gover.Gateway/wwwroot/_gover_/ApiDoc.html

@@ -43,7 +43,7 @@
         <nav class="navbar navbar-expand-md navbar-light">
 
             <!-- Company name shown on mobile -->
-            <a class="navbar-brand d-md-none d-lg-none d-xl-none" href="#"><span> Sers </span> Dashboard </a>
+            <a class="navbar-brand d-md-none d-lg-none d-xl-none" href><span> Sers </span> Dashboard </a>
 
             <!-- Mobile menu toggle -->
             <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#mainNavbar" aria-controls="mainNavbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -83,7 +83,7 @@
 
 
                     <li class="nav-item dropdown">
-                        <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Ext</a>
+                        <a class="nav-link dropdown-toggle" data-toggle="dropdown" href role="button" aria-haspopup="true" aria-expanded="false">Ext</a>
                         <div class="dropdown-menu navbar-dark bg-primary">
                             <a class="dropdown-item" href="/JsStation/JsStation.html">JsStation</a>
                             <a class="dropdown-item" href="/MicroControl/mc.html">MicroControl</a>
@@ -110,19 +110,19 @@
 
                 postman导入文件(用以导入接口至postman):
                 <br />&nbsp; &nbsp; &nbsp; &nbsp;
-                <a id="postmanCollection" href="#" title="download postman collection File">下载postmanCollection</a> |
-                <a id="postmanEnvironment" href="#" title="download postman environment File">下载postmanEnvironment</a>
+                <a id="postmanCollection" href title="download postman collection File">下载postmanCollection</a> |
+                <a id="postmanEnvironment" href title="download postman environment File">下载postmanEnvironment</a>
                 <br />
 
                 postmanWeb:
                 <br />&nbsp; &nbsp; &nbsp; &nbsp;
-                <a href="#" onclick="openPostmanWeb(false)">打开postmanWeb</a> |
-                <a href="#" onclick="openPostmanWeb(true)">打开postmanWeb并加载当前api</a>
+                <a href onclick="openPostmanWeb(false)">打开postmanWeb</a> |
+                <a href onclick="openPostmanWeb(true)">打开postmanWeb并加载当前api</a>
                 <br />
 
                 markdown文档:
                 <br />&nbsp; &nbsp; &nbsp; &nbsp;
-                <a id="mdDownload" href="#" title="download markdown document file">下载markdown文档</a>              
+                <a id="mdDownload" href title="download markdown document file">下载markdown文档</a>              
 
             </div>
         </div>

+ 6 - 6
dotnet/ServiceCenter/App.Gover.Gateway/wwwroot/_gover_/ApiStation.html

@@ -43,7 +43,7 @@
         <nav class="navbar navbar-expand-md navbar-light">
 
             <!-- Company name shown on mobile -->
-            <a class="navbar-brand d-md-none d-lg-none d-xl-none" href="#"><span> Sers </span> Dashboard </a>
+            <a class="navbar-brand d-md-none d-lg-none d-xl-none" href><span> Sers </span> Dashboard </a>
 
             <!-- Mobile menu toggle -->
             <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#mainNavbar" aria-controls="mainNavbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -83,7 +83,7 @@
 
 
                     <li class="nav-item dropdown">
-                        <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Ext</a>
+                        <a class="nav-link dropdown-toggle" data-toggle="dropdown" href role="button" aria-haspopup="true" aria-expanded="false">Ext</a>
                         <div class="dropdown-menu navbar-dark bg-primary">
                             <a class="dropdown-item" href="/JsStation/JsStation.html">JsStation</a>
                             <a class="dropdown-item" href="/MicroControl/mc.html">MicroControl</a>
@@ -103,11 +103,11 @@
         <div class="container">
             <div class="jumbotron jumbotron-narrow static-slider">
 
-                <a href="#" onclick="apiStationFilter=null;reloadStations();" title="显示所有的Api站点">显示所有</a>
+                <a href onclick="apiStationFilter=null;reloadStations();" title="显示所有的Api站点">显示所有</a>
 
-                <a href="#" onclick="apiStationFilter=apiStationFilter_OnlyOnline;reloadStations();" title="仅显示在线的Api站点(apiNodeCount不为0)(默认为仅显示在线)">仅显示在线</a>
+                <a href onclick="apiStationFilter=apiStationFilter_OnlyOnline;reloadStations();" title="仅显示在线的Api站点(apiNodeCount不为0)(默认为仅显示在线)">仅显示在线</a>
  
-                <a href="#" onclick="removeOfflineApi()">移除离线接口</a>
+                <a href onclick="removeOfflineApi()">移除离线接口</a>
             </div>
         </div>
     </div>
@@ -141,7 +141,7 @@
                             apiNode : {{station.apiNodeCount}}     <br />
                             activeApiNode : {{station.activeApiNodeCount}}     <br />
                             状态(正常|暂停) : {{station.status}}<br />
-                            操作 : <a href="#" @click="start(station)">打开</a>   <a href="#" @click="pause(station)">暂停</a><br />
+                            操作 : <a href @click="start(station)">打开</a>   <a href @click="pause(station)">暂停</a><br />
 
                         </div>
                         <div style=" clear: both;"></div>

+ 2 - 2
dotnet/ServiceCenter/App.Gover.Gateway/wwwroot/_gover_/Health.html

@@ -43,7 +43,7 @@
         <nav class="navbar navbar-expand-md navbar-light">
 
             <!-- Company name shown on mobile -->
-            <a class="navbar-brand d-md-none d-lg-none d-xl-none" href="#"><span> Sers </span> Dashboard </a>
+            <a class="navbar-brand d-md-none d-lg-none d-xl-none" href><span> Sers </span> Dashboard </a>
 
             <!-- Mobile menu toggle -->
             <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#mainNavbar" aria-controls="mainNavbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -83,7 +83,7 @@
 
 
                     <li class="nav-item dropdown">
-                        <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Ext</a>
+                        <a class="nav-link dropdown-toggle" data-toggle="dropdown" href role="button" aria-haspopup="true" aria-expanded="false">Ext</a>
                         <div class="dropdown-menu navbar-dark bg-primary">
                             <a class="dropdown-item" href="/JsStation/JsStation.html">JsStation</a>
                             <a class="dropdown-item" href="/MicroControl/mc.html">MicroControl</a>

+ 4 - 4
dotnet/ServiceCenter/App.Gover.Gateway/wwwroot/_gover_/RateLimit.html

@@ -43,7 +43,7 @@
         <nav class="navbar navbar-expand-md navbar-light">
 
             <!-- Company name shown on mobile -->
-            <a class="navbar-brand d-md-none d-lg-none d-xl-none" href="#"><span> Sers </span> Dashboard </a>
+            <a class="navbar-brand d-md-none d-lg-none d-xl-none" href><span> Sers </span> Dashboard </a>
 
             <!-- Mobile menu toggle -->
             <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#mainNavbar" aria-controls="mainNavbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -83,7 +83,7 @@
 
 
                     <li class="nav-item dropdown">
-                        <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Ext</a>
+                        <a class="nav-link dropdown-toggle" data-toggle="dropdown" href role="button" aria-haspopup="true" aria-expanded="false">Ext</a>
                         <div class="dropdown-menu navbar-dark bg-primary">
                             <a class="dropdown-item" href="/JsStation/JsStation.html">JsStation</a>
                             <a class="dropdown-item" href="/MicroControl/mc.html">MicroControl</a>
@@ -133,8 +133,8 @@
                             [{{item.rateLimitKey}}]<br />
                             Type:{{item.rateLimitType}}     <br />
 
-                            操作:<a href="#" @click="remove(item)">移除</a>
-                            <a href="#" @click="refresh(item)">刷新</a><br />
+                            操作:<a href @click="remove(item)">移除</a>
+                            <a href @click="refresh(item)">刷新</a><br />
                             -----------------------<br />
                             {{item}}
 

+ 4 - 4
dotnet/ServiceCenter/App.Gover.Gateway/wwwroot/_gover_/ServiceStation.html

@@ -43,7 +43,7 @@
         <nav class="navbar navbar-expand-md navbar-light">
 
             <!-- Company name shown on mobile -->
-            <a class="navbar-brand d-md-none d-lg-none d-xl-none" href="#"><span> Sers </span> Dashboard </a>
+            <a class="navbar-brand d-md-none d-lg-none d-xl-none" href><span> Sers </span> Dashboard </a>
 
             <!-- Mobile menu toggle -->
             <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#mainNavbar" aria-controls="mainNavbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -83,7 +83,7 @@
 
 
                     <li class="nav-item dropdown">
-                        <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Ext</a>
+                        <a class="nav-link dropdown-toggle" data-toggle="dropdown" href role="button" aria-haspopup="true" aria-expanded="false">Ext</a>
                         <div class="dropdown-menu navbar-dark bg-primary">
                             <a class="dropdown-item" href="/JsStation/JsStation.html">JsStation</a>
                             <a class="dropdown-item" href="/MicroControl/mc.html">MicroControl</a>
@@ -128,10 +128,10 @@
                     <script src="Scripts/Sers/sers.apiClient.js"></script>
                     <div id="stations">
 
-                        <div v-for="station in stations" style="width:300px;height:540px; float:left;margin:2px;padding:4px;word-wrap:break-word;" class="line">
+                        <div v-for="station in stations" style="width:300px;height:500px;line-height:1.5;float:left;margin:2px;padding:4px;word-wrap:break-word;" class="line">
                             <font style="font-weight:bold;color:#e84855;">{{ (station.serviceStationInfo||{}).serviceStationName }} </font><br />
                             {{station.apiStationNames}} <br />                            
-                            操作 : <a href="#" @click="start(station)">打开</a>   <a href="#" @click="pause(station)">暂停</a>  <a href="#" @click="stop(station)">强制关闭</a> 
+                            操作 : <a href @click="start(station)">打开</a>   <a href @click="pause(station)">暂停</a>  <a href @click="stop(station)">强制关闭</a> 
                             <br />
                             <table>
                                 <tr>

+ 2 - 2
dotnet/ServiceCenter/App.Gover.Gateway/wwwroot/_gover_/blog.html

@@ -43,7 +43,7 @@
         <nav class="navbar navbar-expand-md navbar-light">
 
             <!-- Company name shown on mobile -->
-            <a class="navbar-brand d-md-none d-lg-none d-xl-none" href="#"><span> Sers </span> Dashboard </a>
+            <a class="navbar-brand d-md-none d-lg-none d-xl-none" href><span> Sers </span> Dashboard </a>
 
             <!-- Mobile menu toggle -->
             <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#mainNavbar" aria-controls="mainNavbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -83,7 +83,7 @@
 
 
                     <li class="nav-item dropdown">
-                        <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Ext</a>
+                        <a class="nav-link dropdown-toggle" data-toggle="dropdown" href role="button" aria-haspopup="true" aria-expanded="false">Ext</a>
                         <div class="dropdown-menu navbar-dark bg-primary">
                             <a class="dropdown-item" href="/JsStation/JsStation.html">JsStation</a>
                             <a class="dropdown-item" href="/MicroControl/mc.html">MicroControl</a>

+ 2 - 2
dotnet/ServiceCenter/App.Gover.Gateway/wwwroot/_gover_/index.html

@@ -43,7 +43,7 @@
         <nav class="navbar navbar-expand-md navbar-light">
 
             <!-- Company name shown on mobile -->
-            <a class="navbar-brand d-md-none d-lg-none d-xl-none" href="#"><span> Sers </span> Dashboard </a>
+            <a class="navbar-brand d-md-none d-lg-none d-xl-none" href><span> Sers </span> Dashboard </a>
 
             <!-- Mobile menu toggle -->
             <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#mainNavbar" aria-controls="mainNavbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -83,7 +83,7 @@
 
 
                     <li class="nav-item dropdown">
-                        <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Ext</a>
+                        <a class="nav-link dropdown-toggle" data-toggle="dropdown" href role="button" aria-haspopup="true" aria-expanded="false">Ext</a>
                         <div class="dropdown-menu navbar-dark bg-primary">
                             <a class="dropdown-item" href="/JsStation/JsStation.html">JsStation</a>
                             <a class="dropdown-item" href="/MicroControl/mc.html">MicroControl</a>

Some files were not shown because too many files changed in this diff