Jelajahi Sumber

1.2.44 增加ssoLogin

liuyanpeng 1 tahun lalu
induk
melakukan
c11f2c8d44
4 mengubah file dengan 140 tambahan dan 3 penghapusan
  1. 2 2
      package.json
  2. 136 0
      public/ssoLogin.html
  3. 1 1
      src/main.js
  4. 1 0
      webpack.prod.js

+ 2 - 2
package.json

@@ -1,7 +1,7 @@
 {
   "name": "prodog-pc-client",
   "description": "Leanwo Prodog Client",
-  "version": "1.2.43",
+  "version": "1.2.44",
   "author": "yangzhijie1488 <yangzhijie1488@163.com>",
   "scripts": {
     "dev": "cross-env webpack serve --config ./webpack.dev.js",
@@ -15,7 +15,7 @@
     "ant-design-vue": "^4.2.1",
     "axios": "^0.19.2",
     "click-outside-vue3": "^4.0.1",
-    "client-base-v4": "4.0.74",
+    "client-base-v4": "4.0.75",
     "client-dic-v3": "^3.0.33",
     "client-eam-v3": "^3.0.78",
     "client-role-v3": "^3.0.24",

+ 136 - 0
public/ssoLogin.html

@@ -0,0 +1,136 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <meta
+      name="viewport"
+      content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"
+    />
+  </head>
+
+  <body>
+    <div id="app1" class="container">
+      <div style="margin-top: 30px">
+        <h1>登录中</h1>
+        <p>{{ message }}</p>
+      </div>
+    </div>
+    <script
+      type="text/javascript"
+      src="/static/jquery/dist/jquery.min.js"
+    ></script>
+    <script
+      type="text/javascript"
+      src="/static/vue/dist/vue.global.prod.js"
+    ></script>
+    <script>
+      Vue.createApp({
+        data: function () {
+          return {
+            token: "",
+            urlRoot: "",
+            languageId: "zh-CN",
+            message: "正在检查您的权限,请稍等...",
+          };
+        },
+        mounted: function () {
+          this.urlRoot = this.getRootPath() + "/";
+          this.getParams();
+        },
+        methods: {
+          // 获取参数后登录
+          getParams: function () {
+            var _self = this;
+            const url = window.location.href;
+            const params = _self.getQueryString();
+            _self.token = params.token;
+            this.azureSamlLogin();
+          },
+
+          // 单点登录
+          azureSamlLogin: function () {
+            const _self = this;
+            const params = {
+              token:_self.token,
+              languageId:_self.languageId,
+            }
+            $.ajax({
+              url: _self.urlRoot + `api/SsoResource/login`,
+              type: "post",
+              data:params,
+              success: function (loginInfo) {
+                if (loginInfo.errorCode == 0) {
+                  _self.setLoginInfo(loginInfo.data);
+                } else {
+                  _self.message = loginInfo.errorMessage;
+                }
+              },
+              error: function (XMLHttpRequest, textStatus, errorThrown) {},
+            });
+          },
+          // 设置LoginInfo
+          setLoginInfo: function (loginInfo) {
+            var _self = this;
+            _self.clearLocalStorage();
+            localStorage.setItem("#token", loginInfo.token);
+            localStorage.setItem("#accountId", loginInfo.accountId);
+            localStorage.setItem("#languageSelected", _self.languageId);
+            localStorage.setItem("#LoginInfo", JSON.stringify(loginInfo));
+            window.location.href = _self.urlRoot + "#/desktop/dashboard";
+          },
+
+          // 获取参数函数
+          getQueryString: function () {
+            const url = window.location.href;
+            const urlStr = url.split("?")[1];
+            const urlSearchParams = new URLSearchParams(urlStr);
+            const result = Object.fromEntries(urlSearchParams.entries());
+            return result;
+          },
+
+          // 获取主机地址
+          getRootPath: function () {
+            var protocol = window.location.protocol;
+            var host = window.location.host;
+            var localhostPath = protocol + "//" + host;
+            return localhostPath;
+          },
+
+          // 清理localStorage
+          clearLocalStorage: function () {
+            // 需要保留的参数列表
+            var reserveParams = [
+              "hostPageBaseURL",
+              "workShopId",
+              "resourceInstanceId",
+              "resourceInstanceName",
+              "apsBaseUrl",
+              "cameraBaseURL",
+            ];
+            //存放的信息
+            var reserveParamValues = [];
+
+            //获取参数信息
+            var len = reserveParams.length;
+            for (let i = 0; i < len; i++) {
+              var reserveParam = reserveParams[i];
+              var reserveParamValue = "";
+              if (localStorage.getItem(reserveParam) != undefined) {
+                reserveParamValue = localStorage.getItem(reserveParam);
+              }
+              reserveParamValues.push(reserveParamValue);
+            }
+
+            //清理localStorage
+            window.localStorage.clear();
+
+            //还原参数信息
+            for (let i = 0; i < len; i++) {
+              localStorage.setItem(reserveParams[i], reserveParamValues[i]);
+            }
+          },
+        },
+      }).mount("#app1");
+    </script>
+  </body>
+</html>

+ 1 - 1
src/main.js

@@ -48,7 +48,7 @@ window.Common = Common;
 window.Notify = Notify;
 
 const menuColor = {
-  logoWidth: 80, // logo宽度 (80)
+  logoWidth: 150, // logo宽度 (80)
   mainColor: '#277fd0', // 菜单栏主题色 ('#2a3f54')
   secondLevelColor: '#2e8ee7', // 二级菜单颜色 ('linear-gradient(#334556, #2c4257), #2a3f54')
   threeLevelColor: '#6db0ee',  // 三级菜单悬浮颜色 ('#495d70')

+ 1 - 0
webpack.prod.js

@@ -77,6 +77,7 @@ module.exports =  WebpackMerge.merge(baseConfig, {
       patterns: [
         { from: "./public/oalogin.html", to: "" },
         { from: "./public/casLogin.html", to: "" },
+        { from: "./public/ssoLogin.html", to: "" },
       ],
     }),
   ]),