From da64ab0923bf8817fc8599a6e37b953ce38f64c8 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期日, 27 八月 2023 18:37:36 +0800
Subject: [PATCH] 2023-08-27

---
 src/api/index.js |  217 +++++++++++++++++++++++++++--------------------------
 1 files changed, 111 insertions(+), 106 deletions(-)

diff --git a/src/api/index.js b/src/api/index.js
index 1170c94..94aafcd 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -1,16 +1,18 @@
 import axios from 'axios'
 import qs from 'qs'
-import { notification } from 'antd'
+import { notification, Modal } from 'antd'
 import md5 from 'md5'
 import CryptoJS from 'crypto-js'
 import jsSHA from 'jssha'
 import moment from 'moment'
+
 import Utils from '@/utils/utils.js'
+import MKEmitter from '@/utils/events.js'
 import CacheUtils from './cacheutils'
-import options from '@/store/options.js'
 
 window.GLOB.IndexDB = null
 window.GLOB.OuterToken = {}
+window.GLOB.$error = false
 
 let service = window.GLOB.service ? '-' + window.GLOB.service.replace('/', '') : ''
 let db = `mkdb${service}`
@@ -23,68 +25,66 @@
 axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
 axios.defaults.withCredentials = false
 
-// axios.interceptors.request.use((config) => {
-//   return config
-// }, (error) => {
-//   return Promise.reject(error)
-// })
-
-const setCurrentUrl = (res) => {
-  if (!!(window.history && window.history.pushState)) {
-    if (window.location.href.indexOf('paramsmain') > -1) {
-      let _href = window.location.href.split('#')
-      localStorage.setItem(_href[0] + 'paramsmain', _href[1])
-    }
-    localStorage.removeItem('UserID')
-    localStorage.removeItem('LoginUID')
-    localStorage.removeItem('User_Name')
-    localStorage.removeItem('Full_Name')
-    localStorage.removeItem('avatar')
-    localStorage.removeItem('dataM')
-    localStorage.removeItem('localDataM')
-    localStorage.removeItem('debug')
-    localStorage.removeItem('role_id')
-    localStorage.removeItem('mk_user_type')
-
-    sessionStorage.clear()
-    sessionStorage.setItem('loginError', JSON.stringify({url: res.config ? res.config.url : '', request: res.config ? res.config.data : '', response: JSON.stringify(res.data)}))
-    window.history.replaceState(null, null, window.location.href.split('#')[0] + '#/login')
-    window.location.reload()
-  }
-}
-
 axios.interceptors.response.use((response) => {
   if (response.data.ErrCode === 'LoginError') {
-    if (window.debugger === true) {
-      response.data.ErrCode = 'E'
-      return Promise.resolve(response.data)
-    } else if (window.GLOB.developing) {
+    if (window.GLOB.developing) {
       sessionStorage.setItem('devError', 'true')
       response.data.ErrCode = 'E'
       return Promise.resolve(response.data)
-    } else if (!sessionStorage.getItem('loginError')) {
-      setCurrentUrl(response)
+    } else if (response.config.url.indexOf('https://sso.mk9h.cn/webapi/dostars') > -1) {
+      return Promise.reject(response.data)
+    } else if (response.config.url.indexOf('https://epc.mk9h.cn/webapi/dostars') > -1) {
+      return Promise.reject(response.data)
     }
+
+    if (!window.GLOB.$error) {
+      window.GLOB.$error = true
+
+      Modal.destroyAll()
+      Modal.error({
+        title: response.data.message,
+        okText: '鐭ラ亾浜�',
+        onOk: () => {
+          window.GLOB.$error = false
+
+          localStorage.removeItem('UserID')
+          localStorage.removeItem('LoginUID')
+          localStorage.removeItem('User_Name')
+          localStorage.removeItem('Full_Name')
+          localStorage.removeItem('avatar')
+          localStorage.removeItem('dataM')
+          localStorage.removeItem('localDataM')
+          localStorage.removeItem('debug')
+          localStorage.removeItem('role_id')
+          localStorage.removeItem('mk_user_type')
+
+          sessionStorage.clear()
+          if (!!(window.history && window.history.pushState)) {
+            window.history.replaceState(null, null, window.location.href.split('#')[0] + '#/login')
+            window.location.reload()
+          }
+        }
+      })
+    }
+
+    return Promise.reject(response.data)
   } else {
     return Promise.resolve(response.data)
   }
 }, (error) => {
-  let response = error.response
+  let response = error.response || ''
 
-  if (response) {
-    if (!response.data || !response.data.errors) { // 杩囨护鏃疯鎶ラ敊淇℃伅
-      notification.error({
-        className: 'notification-custom-error',
-        bottom: 0,
-        message: '鐘舵�佺爜-' + response.status + '锛岃鑱旂郴绠$悊鍛�',
-        placement: 'bottomRight',
-        duration: 15
-      })
-    }
-    return Promise.reject(response)
-  } else {
-    return Promise.reject()
+  if (response && response.status) {
+    notification.error({
+      className: 'notification-custom-error',
+      bottom: 0,
+      message: '鐘舵�佺爜-' + response.status + '锛岃鑱旂郴绠$悊鍛�',
+      placement: 'bottomRight',
+      duration: 15
+    })
   }
+
+  return Promise.reject(response)
 })
 
 class Api {
@@ -231,16 +231,20 @@
       param.thd_party_openid = openid
       param.thd_party_appid = appid
       param.id = scanId
-    } else if (binding_type === 'login_check') { // appid 姝ゆ椂涓虹洰鏍�
+    } else if (binding_type === 'login_check') { // appid 姝ゆ椂涓虹洰鏍囧湴鍧�
       param.v_type = 'login_check'
       param.LoginUID = sessionStorage.getItem('LoginUID') || ''
-      url = appid.replace(/\/webapi(.*)/, '/webapi/dologon/s_visitor_login')
-
+      
       if (!param.rduri) {
         param.rduri = window.GLOB.baseurl + 'webapi/dologon/s_visitor_login'
       }
-
-      param.linkurl = appid.replace(/\/webapi(.*)/, '/index.html')
+      
+      if (appid) {
+        url = appid.replace(/\/webapi(.*)/, '/webapi/dologon/s_visitor_login')
+        param.linkurl = appid.replace(/\/webapi(.*)/, '/index.html')
+      } else {
+        param.linkurl = window.GLOB.linkurl
+      }
     }
     
     param.LText = md5(window.btoa(_SessionUid + param.timestamp + (param.linkurl || '')))
@@ -269,7 +273,7 @@
       Password: '',
       check_code: checkcode,
       way_no: 'sms_vcode',
-      systemType: options.sysType,
+      systemType: window.GLOB.sysType,
       login_city: sessionStorage.getItem('city') || '',
       login_id_address: sessionStorage.getItem('ipAddress') || '',
       kei_id: window.btoa(window.encodeURIComponent(window.GLOB.host)),
@@ -280,11 +284,11 @@
     let url = '/webapi/dologon'
     if (isCloud) {
       param.debug = 'Y'
-      if (options.cloudServiceApi) {
-        param.rduri = options.cloudServiceApi.replace(/\/webapi(.*)/, '/webapi/dologon')
+      if (window.GLOB.cloudServiceApi) {
+        param.rduri = window.GLOB.cloudServiceApi.replace(/\/webapi(.*)/, '/webapi/dologon')
       }
     } else if (window.GLOB.mainSystemApi) {
-      if (options.sysType !== 'cloud' && window.GLOB.systemType !== 'production') {
+      if (window.GLOB.sysType !== 'cloud' && window.GLOB.systemType !== 'production') {
         param.linkurl = window.GLOB.linkurl
       }
       param.rduri = window.GLOB.mainSystemApi.replace(/\/webapi(.*)/, '/webapi/dologon')
@@ -305,7 +309,7 @@
     let param = {
       // func: 'webapi_login',
       UserName: username,
-      systemType: options.sysType,
+      systemType: window.GLOB.sysType,
       Type: 'S',
       login_city: sessionStorage.getItem('city') || '',
       login_id_address: sessionStorage.getItem('ipAddress') || '',
@@ -340,11 +344,11 @@
 
     if (isCloud) {
       param.debug = 'Y'
-      if (options.cloudServiceApi) {
-        param.rduri = options.cloudServiceApi.replace(/\/webapi(.*)/, '/webapi/dologon')
+      if (window.GLOB.cloudServiceApi) {
+        param.rduri = window.GLOB.cloudServiceApi.replace(/\/webapi(.*)/, '/webapi/dologon')
       }
     } else if (window.GLOB.mainSystemApi) {
-      if (options.sysType !== 'cloud' && window.GLOB.systemType !== 'production') {
+      if (window.GLOB.sysType !== 'cloud' && window.GLOB.systemType !== 'production') {
         param.linkurl = window.GLOB.linkurl
       }
       param.rduri = window.GLOB.mainSystemApi.replace(/\/webapi(.*)/, '/webapi/dologon')
@@ -358,36 +362,31 @@
   }
 
   delCacheConfig (type = '') {
-    let date = moment().subtract(7, 'days').format('YYYY-MM-DD')
+    let date = moment().subtract(7, 'days').format('YYYY-MM-DD HH:mm:ss')
     CacheUtils.delIndexDBCacheConfig(date, type)
   }
 
-  writeCacheConfig (menuid, data) {
+  writeCacheConfig (menuid, data, BID = '', id = '') {
     if (!menuid) return
-    let date = moment().format('YYYY-MM-DD')
+    let date = moment().format('YYYY-MM-DD HH:mm:ss')
     let _data = data ? JSON.stringify(data) : ''
+    let userid = sessionStorage.getItem('UserID') || ''
 
-    CacheUtils.writeCacheInIndexDB({menuid, CreateDate: date, LongParam: _data})
+    CacheUtils.writeCacheInIndexDB({menuid: md5(menuid + userid + BID + id), BID: BID, id: id, CreateDate: date, LongParam: _data})
   }
 
-  getLCacheConfig (menuid) {
+  getLCacheConfig (menuid, minutes, BID = '', id = '') {
     return new Promise((resolve, reject) => {
-      if (window.GLOB.IndexDB) {
-        CacheUtils.getIndexDBCacheConfig(menuid).then(res => {
-          if (res && res.LongParam) {
-            let _data = JSON.parse(res.LongParam)
-            if (_data.length === 0) {
-              resolve()
-            } else {
-              resolve(_data)
-            }
-          } else {
-            resolve()
-          }
-        })
-      } else {
-        resolve()
-      }
+      let limit = minutes ? moment().subtract(minutes, 'minutes').format('YYYY-MM-DD HH:mm:ss') : ''
+      let userid = sessionStorage.getItem('UserID') || ''
+
+      CacheUtils.getIndexDBCacheConfig(md5(menuid + userid + BID + id)).then(res => {
+        if (res && res.LongParam) {
+          resolve({data: JSON.parse(res.LongParam), valid: !limit || res.CreateDate > limit})
+        } else {
+          resolve({data: null, valid: false})
+        }
+      })
     })
   }
 
@@ -439,6 +438,11 @@
           modifydate: msg.createDate
         }
 
+        if (window.GLOB.initVersion && sessionStorage.getItem('visitorUserID')) {
+          param.userid = sessionStorage.getItem('visitorUserID')
+          param.LoginUID = sessionStorage.getItem('visitorLoginUID')
+        }
+
         param.TypeCharOne = ''
         param.typename = ''
 
@@ -480,7 +484,8 @@
           if (list.length > 0) {
             let clear = false
             let _appkey = window.GLOB.appkey.substr(-10)
-            let reg = new RegExp(_appkey + '$', 'ig')
+            let reg = new RegExp(_appkey + '$', 'i')
+            let reHome = list.includes('home_page_id')
 
             list.forEach(mid => {
               if (reg.test(mid)) {
@@ -491,6 +496,11 @@
               list = ''
             }
             CacheUtils.delIndexDBConfig(list)
+            this.delCacheConfig('all')
+
+            if (reHome) {
+              MKEmitter.emit('reloadMenuView', 'home_page_id')
+            }
           }
 
           CacheUtils.updateIndexDBversion({version: res.app_version || '1.00', createDate: curTime})
@@ -524,14 +534,14 @@
    */
   getCloudConfig (param) {
     param.lang = param.lang || sessionStorage.getItem('lang') || ''
-    param.appkey = window.GLOB.appkey || ''
+    param.appkey = param.appkey || window.GLOB.appkey || ''
     param.SessionUid = localStorage.getItem('SessionUid') || ''
-    param.userid = sessionStorage.getItem('CloudUserID') || ''
-    param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
+    param.userid = param.userid || sessionStorage.getItem('CloudUserID') || ''
+    param.LoginUID = param.LoginUID || sessionStorage.getItem('CloudLoginUID') || ''
 
     param = this.encryptParam(param)
 
-    let url = options.cloudServiceApi ? options.cloudServiceApi : '/webapi/dostars'
+    let url = window.GLOB.cloudServiceApi ? window.GLOB.cloudServiceApi : '/webapi/dostars'
     if (param.func) {
       url = url + '/' + param.func
     }
@@ -578,8 +588,8 @@
     param.appkey = param.appkey || window.GLOB.appkey
 
     let url = '/webapi/dostars'
-    if (sessionStorage.getItem('isEditState') === 'true' && options.cloudServiceApi) { // 缂栬緫鐘舵�侊紝涓斿瓨鍦ㄤ簯绔湴鍧�
-      url = options.cloudServiceApi
+    if (window.GLOB.mkHS && window.GLOB.cloudServiceApi) { // HS涓嬶紝涓斿瓨鍦ㄤ簯绔湴鍧�
+      url = window.GLOB.cloudServiceApi
       param.userid = sessionStorage.getItem('CloudUserID') || ''
       param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
     } else if (window.GLOB.mainSystemApi) {
@@ -607,12 +617,12 @@
     param.lang = param.lang || sessionStorage.getItem('lang') || ''
     param.SessionUid = localStorage.getItem('SessionUid') || ''
     param.LoginUID = sessionStorage.getItem('LoginUID') || ''
-    param.appkey = window.GLOB.appkey || ''
+    param.appkey = param.appkey || window.GLOB.appkey || ''
 
     let url = '/webapi/dostars'
-    if (sessionStorage.getItem('isEditState') === 'true') { // 缂栬緫鐘舵�侊紝鍗曠偣鐧诲綍鏈嶅姟鍣ㄤ负浜戠
-      if (options.cloudServiceApi) { // 瀛樺湪浜戠鍦板潃鏃讹紝浣跨敤浜戠绯荤粺鍙傛暟
-        url = options.cloudServiceApi
+    if (window.GLOB.mkHS) {          // HS涓嬶紝鍗曠偣鐧诲綍鏈嶅姟鍣ㄤ负浜戠
+      if (window.GLOB.cloudServiceApi) { // 瀛樺湪浜戠鍦板潃鏃讹紝浣跨敤浜戠绯荤粺鍙傛暟
+        url = window.GLOB.cloudServiceApi
         param.userid = sessionStorage.getItem('CloudUserID') || ''
         param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
       }
@@ -831,7 +841,7 @@
     } else {
       let _param = {
         UserName: token.username,
-        systemType: options.sysType,
+        systemType: window.GLOB.sysType,
         login_city: sessionStorage.getItem('city') || '',
         device_id: token.appkey || '',
         timestamp: moment().format('YYYY-MM-DD HH:mm:ss'),
@@ -899,14 +909,9 @@
       return new Promise(resolve => this.visitOuterSystem(param, resolve))
     }
 
-    if (['sPC_Get_TableData', 'sPC_Get_TableData_debug', 'sPC_TableData_InUpDe', 'sPC_TableData_InUpDe_debug', 'sPC_Get_structured_data'].includes(param.func)) {
-      if (sessionStorage.getItem('isEditState') === 'true') {
-        param.username = sessionStorage.getItem('CloudUserName') || ''
-        param.fullname = sessionStorage.getItem('CloudFullName') || ''
-      } else {
-        param.username = sessionStorage.getItem('User_Name') || ''
-        param.fullname = sessionStorage.getItem('Full_Name') || ''
-      }
+    if (['sPC_TableData_InUpDe', 'sPC_TableData_InUpDe_debug'].includes(param.func)) {
+      param.username = sessionStorage.getItem('User_Name') || ''
+      param.fullname = sessionStorage.getItem('Full_Name') || ''
     }
 
     let login = false

--
Gitblit v1.8.0