From f078c137d61270d243cd8e03077fa9cf000e276b Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 14 八月 2023 14:02:40 +0800
Subject: [PATCH] 2023-08-14

---
 src/utils/utils-datamanage.js                                          |   15 
 src/tabviews/custom/components/code/sand-box/index.jsx                 |    8 
 src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx   |   16 
 src/tabviews/custom/components/tree/antd-tree/index.jsx                |   12 
 src/tabviews/zshare/actionList/popupbutton/index.jsx                   |    7 
 src/tabviews/zshare/settingcomponent/index.jsx                         |    3 
 src/views/menudesign/homeform/index.jsx                                |    3 
 src/tabviews/zshare/actionList/excelInbutton/index.jsx                 |    5 
 src/views/menudesign/menuform/index.jsx                                |    3 
 src/tabviews/basetable/index.jsx                                       |    1 
 src/templates/sharecomponent/tablecomponent/index.jsx                  |    9 
 src/tabviews/zshare/actionList/newpagebutton/index.jsx                 |    8 
 src/views/billprint/index.jsx                                          |    4 
 src/tabviews/subtabtable/index.jsx                                     |    2 
 src/tabviews/commontable/index.jsx                                     |    2 
 src/tabviews/zshare/actionList/normalbutton/index.jsx                  |   51 ++-
 src/tabviews/zshare/actionList/changeuserbutton/index.jsx              |    8 
 src/views/menudesign/index.jsx                                         |    5 
 src/tabviews/custom/components/card/data-card/index.jsx                |    6 
 src/tabviews/custom/components/card/prop-card/index.jsx                |   14 
 src/menu/modalconfig/tablecomponent/index.jsx                          |    5 
 src/tabviews/custom/components/table/normal-table/index.jsx            |    6 
 src/tabviews/custom/components/chart/antv-pie/index.jsx                |   12 
 src/tabviews/custom/components/timeline/normal-timeline/index.jsx      |   12 
 src/components/breadview/index.jsx                                     |    3 
 src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss     |   16 +
 src/tabviews/zshare/mutilform/index.jsx                                |   11 
 src/tabviews/custom/components/chart/antv-X6/index.jsx                 |   19 +
 src/menu/components/share/actioncomponent/actionform/index.jsx         |   10 
 src/tabviews/custom/components/carousel/prop-card/index.jsx            |    6 
 src/templates/zshare/createinterface/index.jsx                         |    3 
 src/views/design/header/versions/index.jsx                             |    7 
 src/components/tabview/index.jsx                                       |    3 
 src/tabviews/custom/components/chart/antv-scatter/index.jsx            |   12 
 src/tabviews/custom/components/chart/antv-bar-line/index.jsx           |   12 
 src/tabviews/custom/components/chart/antv-dashboard/index.jsx          |   12 
 src/views/design/header/index.jsx                                      |    9 
 src/views/login/loginform.jsx                                          |   13 
 src/views/printTemplate/index.jsx                                      |    5 
 src/components/header/index.jsx                                        |   11 
 src/tabviews/zshare/topSearch/index.jsx                                |   11 
 src/tabviews/custom/components/card/double-data-card/index.jsx         |    6 
 src/tabviews/custom/components/chart/antv-G6/index.jsx                 |    8 
 src/tabviews/zshare/actionList/exceloutbutton/index.jsx                |   19 
 src/tabviews/custom/components/carousel/data-card/index.jsx            |    6 
 src/views/tabledesign/menuform/index.jsx                               |    3 
 src/api/index.js                                                       |   39 +-
 src/tabviews/custom/components/calendar/index.jsx                      |   90 ++++-
 src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx |    4 
 src/tabviews/custom/components/chart/custom-chart/index.jsx            |   12 
 src/utils/utils.js                                                     |   11 
 src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.jsx      |    2 
 src/index.js                                                           |   35 +
 src/menu/components/share/usercomponent/index.jsx                      |    5 
 src/tabviews/custom/components/card/table-card/index.jsx               |    6 
 src/tabviews/zshare/tablenodes/index.jsx                               |    5 
 src/tabviews/rolemanage/index.jsx                                      |    5 
 src/templates/zshare/verifycard/index.jsx                              |   22 +
 src/menu/replaceField/index.jsx                                        |    9 
 src/views/systemfunc/sidemenu/index.jsx                                |    3 
 src/tabviews/zshare/actionList/printbutton/index.jsx                   |   22 -
 src/tabviews/custom/components/chart/antv-X6/index.scss                |    9 
 src/tabviews/zshare/pageMessage/index.jsx                              |    5 
 src/tabviews/custom/components/card/balcony/index.jsx                  |   12 
 src/templates/zshare/verifycard/baseform/index.jsx                     |   49 +++
 src/views/login/index.jsx                                              |   26 -
 66 files changed, 442 insertions(+), 351 deletions(-)

diff --git a/src/api/index.js b/src/api/index.js
index 9fbeb86..9ce1f21 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -5,9 +5,9 @@
 import CryptoJS from 'crypto-js'
 import jsSHA from 'jssha'
 import moment from 'moment'
+
 import Utils from '@/utils/utils.js'
 import CacheUtils from './cacheutils'
-import options from '@/store/options.js'
 
 window.GLOB.IndexDB = null
 window.GLOB.OuterToken = {}
@@ -61,7 +61,7 @@
 }, (error) => {
   let response = error.response || ''
 
-  if (response && (!response.data || !response.data.errors)) { // 杩囨护鏃疯鎶ラ敊淇℃伅
+  if (response && response.status) {
     notification.error({
       className: 'notification-custom-error',
       bottom: 0,
@@ -241,7 +241,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)),
@@ -252,11 +252,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')
@@ -277,7 +277,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') || '',
@@ -312,11 +312,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')
@@ -338,14 +338,17 @@
     if (!menuid) return
     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), CreateDate: date, LongParam: _data})
   }
 
   getLCacheConfig (menuid, minutes) {
     return new Promise((resolve, reject) => {
       let limit = minutes ? moment().subtract(minutes, 'minutes').format('YYYY-MM-DD HH:mm:ss') : ''
-      CacheUtils.getIndexDBCacheConfig(menuid).then(res => {
+      let userid = sessionStorage.getItem('UserID') || ''
+
+      CacheUtils.getIndexDBCacheConfig(md5(menuid + userid)).then(res => {
         if (res && res.LongParam) {
           resolve({data: JSON.parse(res.LongParam), valid: !limit || res.CreateDate > limit})
         } else {
@@ -500,7 +503,7 @@
 
     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
     }
@@ -547,8 +550,8 @@
     param.appkey = param.appkey || window.GLOB.appkey
 
     let url = '/webapi/dostars'
-    if (window.GLOB.mkHS && options.cloudServiceApi) { // HS涓嬶紝涓斿瓨鍦ㄤ簯绔湴鍧�
-      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) {
@@ -580,8 +583,8 @@
 
     let url = '/webapi/dostars'
     if (window.GLOB.mkHS) {          // HS涓嬶紝鍗曠偣鐧诲綍鏈嶅姟鍣ㄤ负浜戠
-      if (options.cloudServiceApi) { // 瀛樺湪浜戠鍦板潃鏃讹紝浣跨敤浜戠绯荤粺鍙傛暟
-        url = options.cloudServiceApi
+      if (window.GLOB.cloudServiceApi) { // 瀛樺湪浜戠鍦板潃鏃讹紝浣跨敤浜戠绯荤粺鍙傛暟
+        url = window.GLOB.cloudServiceApi
         param.userid = sessionStorage.getItem('CloudUserID') || ''
         param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
       }
@@ -800,7 +803,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'),
diff --git a/src/components/breadview/index.jsx b/src/components/breadview/index.jsx
index 4773add..3a44900 100644
--- a/src/components/breadview/index.jsx
+++ b/src/components/breadview/index.jsx
@@ -6,7 +6,6 @@
 
 import asyncComponent from '@/utils/asyncLoadComponent'
 import NotFount from '@/components/404'
-import options from '@/store/options.js'
 import MKEmitter from '@/utils/events.js'
 import Api from '@/api'
 import './index.scss'
@@ -31,7 +30,7 @@
     const { tabview } = this.state
     window.GLOB.CacheMap = new Map()
 
-    if (options.sysType === 'local' && window.GLOB.systemType !== 'production') {
+    if (window.GLOB.sysType === 'local' && window.GLOB.systemType !== 'production') {
       let roledefer = new Promise(resolve => {
         Api.getSystemConfig({
           func: 's_Get_TrdMenu_Role',
diff --git a/src/components/header/index.jsx b/src/components/header/index.jsx
index 5fac2c3..7885a02 100644
--- a/src/components/header/index.jsx
+++ b/src/components/header/index.jsx
@@ -15,7 +15,6 @@
 import asyncComponent from '@/utils/asyncComponent'
 import Api from '@/api'
 import MKEmitter from '@/utils/events.js'
-import options from '@/store/options.js'
 import Utils from '@/utils/utils.js'
 import avatar from '@/assets/img/avatar.jpg'
 import './index.scss'
@@ -91,7 +90,7 @@
 
   getRolesMenu () {
     // 鑾峰彇涓昏彍鍗曞弬鏁�
-    let _param = {func: 's_get_pc_menus', systemType: options.sysType}
+    let _param = {func: 's_get_pc_menus', systemType: window.GLOB.sysType}
     _param.pro_sys = window.GLOB.systemType === 'production' ? 'Y' : ''
     
     Api.getSystemConfig(_param).then(result => {
@@ -107,10 +106,10 @@
       const { menulist, thdMenuList } = this.getMenulist(result)
 
       let systems = []
-      if ((options.sysType === 'local' || options.sysType === 'SSO') && result.sys_list) {
+      if ((window.GLOB.sysType === 'local' || window.GLOB.sysType === 'SSO') && result.sys_list) {
         systems = result.sys_list
 
-        if (options.sysType === 'local' && window.GLOB.systemType !== 'production' && systems.length > 10) {
+        if (window.GLOB.sysType === 'local' && window.GLOB.systemType !== 'production' && systems.length > 10) {
           systems.length = 10
         }
       }
@@ -495,11 +494,11 @@
   }
 
   gotoDoc = () => {
-    if (options.sysType === 'local' && window.GLOB.mainSystemApi) {
+    if (window.GLOB.sysType === 'local' && window.GLOB.mainSystemApi) {
       let ssodomain = window.GLOB.mainSystemApi.replace('/webapi/dostars', '')
       let url = `${ssodomain}/doc/index.html#?appkey=${window.GLOB.appkey}&LoginUID=${sessionStorage.getItem('LoginUID')}`
       window.open(url)
-    } else if (options.sysType === 'SSO' || options.sysType === 'cloud') {
+    } else if (window.GLOB.sysType === 'SSO' || window.GLOB.sysType === 'cloud') {
       window.open(`${window.location.href.replace(/\/admin(.*)|\/index.html(.*)|\/#(.*)/ig, '')}/doc/index.html#?appkey=${window.GLOB.appkey}&LoginUID=${sessionStorage.getItem('LoginUID')}`)
     }
   }
diff --git a/src/components/tabview/index.jsx b/src/components/tabview/index.jsx
index 1d2e3da..f34c03f 100644
--- a/src/components/tabview/index.jsx
+++ b/src/components/tabview/index.jsx
@@ -9,7 +9,6 @@
 
 import asyncComponent from '@/utils/asyncLoadComponent'
 import NotFount from '@/components/404'
-import options from '@/store/options.js'
 import MKEmitter from '@/utils/events.js'
 import Api from '@/api'
 import './index.scss'
@@ -104,7 +103,7 @@
     e.stopPropagation()
     window.GLOB.CacheMap = new Map()
 
-    if (options.sysType === 'local' && window.GLOB.systemType !== 'production') {
+    if (window.GLOB.sysType === 'local' && window.GLOB.systemType !== 'production') {
       let roledefer = new Promise(resolve => {
         Api.getSystemConfig({
           func: 's_Get_TrdMenu_Role',
diff --git a/src/index.js b/src/index.js
index 866506c..1f80133 100644
--- a/src/index.js
+++ b/src/index.js
@@ -45,10 +45,6 @@
       }
     }
 
-    if (options.cdomain && options.sysType !== 'cloud') {
-      options.cloudServiceApi = options.cdomain + '/webapi/dostars'
-    }
-
     let GLOB = {}
     GLOB.appId = config.appId || ''
     GLOB.lineColor = config.lineColor || ''
@@ -63,6 +59,12 @@
     GLOB.WXNotice = config.WXNotice + '' === 'true'
     GLOB.accessToken = {}
     GLOB.mkHS = false
+    GLOB.navBar = 'shutter' // 榛樿涓虹櫨鍙剁獥
+
+    GLOB.sysType = options.sysType
+    if (GLOB.sysType !== 'cloud') {
+      GLOB.cloudServiceApi = options.cdomain + '/webapi/dostars'
+    }
 
     if (sessionStorage.getItem('externalDatabase')) {
       GLOB.externalDatabase = `[${sessionStorage.getItem('externalDatabase')}]..`
@@ -73,7 +75,7 @@
     }
 
     // 鍙湁涓氬姟绯荤粺鎵嶅彲浠ヨ缃负姝e紡绯荤粺
-    if (options.sysType === 'local' && (config.systemType === 'official' || config.systemType === 'production')) {
+    if (GLOB.sysType === 'local' && (config.systemType === 'official' || config.systemType === 'production')) {
       GLOB.systemType = 'production'
       if (config.probation && /^20\d{2}-\d{2}-\d{2}$/.test(config.probation) && new Date(config.probation).getTime() > new Date().getTime()) {
         GLOB.probation = true
@@ -89,7 +91,7 @@
         document.getElementById('root').innerHTML = '<div style="text-align: center; font-size: 30px; margin-top: 40vh;">姝e紡绯荤粺涓嶅彲浣跨敤 http://cloud.mk9h.cn 鍋氫负鍗曠偣鍦板潃锛岃鑱旂郴绠$悊鍛橈紒</div>'
         return
       }
-    } else if (options.sysType === 'local') {
+    } else if (GLOB.sysType === 'local') {
       GLOB.probation = true
       GLOB.systemType = ''
 
@@ -108,25 +110,26 @@
       GLOB.mainSystemApi = ''
     }
 
-    GLOB.debugger = options.sysType === 'local' && GLOB.systemType !== 'production'
+    GLOB.debugger = GLOB.sysType === 'local' && GLOB.systemType !== 'production'
 
     if (/#\/hs$/.test(window.location.href)) { // hs涓嬩笉鎵撳嵃鑴氭湰
       GLOB.debugger = false
     }
 
-    if (options.sysType !== 'cloud') {
+    if (GLOB.sysType !== 'cloud') {
       if (config.appkey === options.cakey) {
         document.getElementById('root').innerHTML = '<div style="text-align: center; font-size: 30px; margin-top: 40vh;">涓嶅彲浣跨敤浜戠appkey锛岃鑱旂郴绠$悊鍛橈紒</div>'
         return
       }
     }
 
-    if (options.sysType === 'cloud') { // cloud涓嶅彲璁剧疆鍗曠偣鏈嶅姟鍣ㄥ湴鍧�,浜戠appkey涓虹郴缁熻缃�
+    if (GLOB.sysType === 'cloud') { // cloud涓嶅彲璁剧疆鍗曠偣鏈嶅姟鍣ㄥ湴鍧�,浜戠appkey涓虹郴缁熻缃�
       GLOB.appkey = options.cakey
+      GLOB.appId = options.caId
       GLOB.WXNotice = false
-    } else if (options.sysType === 'SSO') { // sso涓嶅彲璁剧疆鍗曠偣鏈嶅姟鍣ㄥ湴鍧�
+    } else if (GLOB.sysType === 'SSO') { // sso涓嶅彲璁剧疆鍗曠偣鏈嶅姟鍣ㄥ湴鍧�
       GLOB.appkey = config.appkey
-    } else if (options.sysType === 'local') { // 涓氬姟绯荤粺
+    } else if (GLOB.sysType === 'local') { // 涓氬姟绯荤粺
       GLOB.appkey = config.appkey
       if (GLOB.systemType === 'production') {
         let systemApi = config.mainSystemApi
@@ -146,8 +149,6 @@
 
     let _href = window.location.href.split('#')[0]
     let _systemMsg = localStorage.getItem(_href + 'system')
-
-    GLOB.navBar = 'shutter' // 榛樿涓虹櫨鍙剁獥
     let className = 'mk-blue-black'
 
     if (_systemMsg) {
@@ -278,6 +279,14 @@
       writable: false,
       value: GLOB.linkurl
     })
+    Object.defineProperty(GLOB, 'sysType', {
+      writable: false,
+      value: GLOB.sysType
+    })
+    Object.defineProperty(GLOB, 'cloudServiceApi', {
+      writable: false,
+      value: GLOB.cloudServiceApi || ''
+    })
     Object.defineProperty(window, 'GLOB', {
       writable: false,
       value: GLOB
diff --git a/src/menu/components/share/actioncomponent/actionform/index.jsx b/src/menu/components/share/actioncomponent/actionform/index.jsx
index bcba0e8..b79847b 100644
--- a/src/menu/components/share/actioncomponent/actionform/index.jsx
+++ b/src/menu/components/share/actioncomponent/actionform/index.jsx
@@ -174,14 +174,16 @@
           shows.push('innerFunc')
         }
         if (this.record.callbackType === 'func') {
-          shows.push('callbackFunc')
+          shows.push('callbackFunc', 'output')
+        } else if (this.record.callbackType === 'script') {
+          shows.push('cbTable', 'output')
         } else if (this.record.callbackType !== 'none') {
           shows.push('cbTable')
         }
         reReadonly.interface = false
         reRequired.interface = true
       } else if (intertype === 'outer') {
-        shows.push('procMode', 'sysInterface', 'outerFunc', 'callbackType', 'output')
+        shows.push('procMode', 'sysInterface', 'outerFunc', 'callbackType')
         if (this.record.procMode === 'system') {
           shows.push('sql', 'sqlType')
         } else if (this.record.procMode === 'inner') {
@@ -189,7 +191,9 @@
           shows.push('innerFunc')
         }
         if (this.record.callbackType === 'func') {
-          shows.push('callbackFunc')
+          shows.push('callbackFunc', 'output')
+        } else if (this.record.callbackType === 'script') {
+          shows.push('cbTable', 'output')
         } else if (this.record.callbackType !== 'none') {
           shows.push('cbTable')
         }
diff --git a/src/menu/components/share/usercomponent/index.jsx b/src/menu/components/share/usercomponent/index.jsx
index d3cec9a..4f72b16 100644
--- a/src/menu/components/share/usercomponent/index.jsx
+++ b/src/menu/components/share/usercomponent/index.jsx
@@ -7,7 +7,6 @@
 
 import Api from '@/api'
 import Utils from '@/utils/utils.js'
-import options from '@/store/options.js'
 import UserForm from './settingform'
 import MKEmitter from '@/utils/events.js'
 import './index.scss'
@@ -144,8 +143,8 @@
             Base64Img: canvas.toDataURL('image/png') // 鑾峰彇鐢熸垚鐨勫浘鐗�
           }
 
-          if (options.cloudServiceApi) {
-            param.rduri = options.cloudServiceApi
+          if (window.GLOB.cloudServiceApi) {
+            param.rduri = window.GLOB.cloudServiceApi
             param.userid = sessionStorage.getItem('CloudUserID') || ''
             param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
           }
diff --git a/src/menu/modalconfig/tablecomponent/index.jsx b/src/menu/modalconfig/tablecomponent/index.jsx
index 01fd0f2..37e9cba 100644
--- a/src/menu/modalconfig/tablecomponent/index.jsx
+++ b/src/menu/modalconfig/tablecomponent/index.jsx
@@ -5,7 +5,6 @@
 import moment from 'moment'
 
 import Api from '@/api'
-import options from '@/store/options.js'
 import Utils from '@/utils/utils.js'
 import MKEmitter from '@/utils/events.js'
 import { queryTableSql } from '@/utils/option.js'
@@ -49,8 +48,8 @@
     param.secretkey = Utils.encrypt(param.LText, param.timestamp)
     param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) // 浜戠鏁版嵁楠岃瘉
 
-    if (options.cloudServiceApi) { // 涓斿瓨鍦ㄤ簯绔湴鍧�
-      param.rduri = options.cloudServiceApi
+    if (window.GLOB.cloudServiceApi) { // 涓斿瓨鍦ㄤ簯绔湴鍧�
+      param.rduri = window.GLOB.cloudServiceApi
       param.userid = sessionStorage.getItem('CloudUserID') || ''
       param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
     }
diff --git a/src/menu/replaceField/index.jsx b/src/menu/replaceField/index.jsx
index df1506a..11289e7 100644
--- a/src/menu/replaceField/index.jsx
+++ b/src/menu/replaceField/index.jsx
@@ -5,7 +5,6 @@
 import moment from 'moment'
 
 import Api from '@/api'
-import options from '@/store/options.js'
 import Utils from '@/utils/utils.js'
 import SettingForm from './settingform'
 import { queryTableSql } from '@/utils/option.js'
@@ -45,8 +44,8 @@
       param.secretkey = Utils.encrypt(param.LText, param.timestamp)
       param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) // 浜戠鏁版嵁楠岃瘉
   
-      if (options.cloudServiceApi) { // 涓斿瓨鍦ㄤ簯绔湴鍧�
-        param.rduri = options.cloudServiceApi
+      if (window.GLOB.cloudServiceApi) { // 涓斿瓨鍦ㄤ簯绔湴鍧�
+        param.rduri = window.GLOB.cloudServiceApi
         param.userid = sessionStorage.getItem('CloudUserID') || ''
         param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
       }
@@ -107,8 +106,8 @@
         }
       } else {
         let param = {func: 'sPC_Get_FieldName', TBName: res.table}
-        if (options.cloudServiceApi) { // 涓斿瓨鍦ㄤ簯绔湴鍧�
-          param.rduri = options.cloudServiceApi
+        if (window.GLOB.cloudServiceApi) { // 涓斿瓨鍦ㄤ簯绔湴鍧�
+          param.rduri = window.GLOB.cloudServiceApi
           param.userid = sessionStorage.getItem('CloudUserID') || ''
           param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
         }
diff --git a/src/tabviews/basetable/index.jsx b/src/tabviews/basetable/index.jsx
index c2422f3..0540563 100644
--- a/src/tabviews/basetable/index.jsx
+++ b/src/tabviews/basetable/index.jsx
@@ -428,6 +428,7 @@
           if (cell.hidden === 'true') return false
 
           cell.logLabel = item.$menuname + '-' + cell.label
+          cell.Ot = cell.Ot || 'requiredSgl'
           cell.ContainerId = this.state.ContainerId
           cell.syncComponentId = cell.syncComponent ? (cell.syncComponent.pop() || '') : ''
           cell.$menuId = item.uuid
diff --git a/src/tabviews/commontable/index.jsx b/src/tabviews/commontable/index.jsx
index 793193c..b4da9d1 100644
--- a/src/tabviews/commontable/index.jsx
+++ b/src/tabviews/commontable/index.jsx
@@ -114,7 +114,7 @@
       }
       
       // HS涓嶄娇鐢ㄨ嚜瀹氫箟璁剧疆
-      if (result.LongParamUser && !window.GLOB.mkHS) {
+      if (result.LongParamUser) {
         try { // 閰嶇疆淇℃伅瑙f瀽
           let userConfig = JSON.parse(window.decodeURIComponent(window.atob(result.LongParamUser)))
           if (userConfig && !userConfig.version) {
diff --git a/src/tabviews/custom/components/calendar/index.jsx b/src/tabviews/custom/components/calendar/index.jsx
index 43b7021..7b1f9d6 100644
--- a/src/tabviews/custom/components/calendar/index.jsx
+++ b/src/tabviews/custom/components/calendar/index.jsx
@@ -69,12 +69,6 @@
       config: _config,
       arr_field: _config.columns.map(col => col.field).join(','),
       search: _config.$searches
-    }, () => {
-      if (_config.setting.onload === 'true') {
-        setTimeout(() => {
-          this.loadData()
-        }, _config.setting.delay || 0)
-      }
     })
   }
 
@@ -89,25 +83,7 @@
       MKEmitter.addListener('searchRefresh', this.searchRefresh)
     }
 
-    if (config.$cache && !this.loaded) {
-      Api.getLCacheConfig(config.uuid).then(res => {
-        if (!res.data || this.loaded) return
-
-        let data = []
-        res.data.forEach((item, index) => {
-          item.key = index
-          item.$$uuid = item[config.setting.primaryKey] || ''
-
-          let pass = this.resetLine(item)
-
-          if (pass) {
-            data.push(item)
-          }
-        })
-
-        this.setState({data: data})
-      })
-    }
+    this.initExec()
   }
 
   shouldComponentUpdate (nextProps, nextState) {
@@ -122,6 +98,66 @@
     MKEmitter.removeListener('searchRefresh', this.searchRefresh)
     MKEmitter.removeListener('resetSelectLine', this.resetParentParam)
     MKEmitter.removeListener('refreshByButtonResult', this.refreshByButtonResult)
+  }
+
+  initExec = () => {
+    const { config } = this.state
+
+    if (config.$cache) {
+      if (config.$time) {
+        Api.getLCacheConfig(config.uuid, config.$time).then(res => {
+          if (!res.valid && config.setting.onload === 'true') {
+            setTimeout(() => {
+              this.loadData('init')
+            }, config.setting.delay || 0)
+          }
+
+          if (!res.data) return
+
+          let _data = []
+          res.data.forEach((item, index) => {
+            item.key = index
+            item.$$uuid = item[config.setting.primaryKey] || ''
+
+            let pass = this.resetLine(item)
+
+            if (pass) {
+              _data.push(item)
+            }
+          })
+  
+          this.setState({data: _data})
+        })
+      } else {
+        Api.getLCacheConfig(config.uuid, 0).then(res => {
+          if (!res.data || this.loaded) return
+  
+          let _data = []
+          res.data.forEach((item, index) => {
+            item.key = index
+            item.$$uuid = item[config.setting.primaryKey] || ''
+
+            let pass = this.resetLine(item)
+
+            if (pass) {
+              _data.push(item)
+            }
+          })
+  
+          this.setState({data: _data})
+        })
+
+        if (config.setting.onload === 'true') {
+          setTimeout(() => {
+            this.loadData('init')
+          }, config.setting.delay || 0)
+        }
+      }
+    } else if (config.setting.onload === 'true') {
+      setTimeout(() => {
+        this.loadData()
+      }, config.setting.delay || 0)
+    }
   }
 
   searchRefresh = (searchId) => {
@@ -171,7 +207,7 @@
     this.loadData()
   }
 
-  async loadData () {
+  async loadData (type) {
     const { config, arr_field, BID, search, year } = this.state
     
     if (config.setting.supModule && !BID) { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇�
@@ -207,7 +243,7 @@
     let result = await Api.genericInterface(param)
     if (result.status) {
       this.loaded = true
-      if (config.$cache && config.setting.onload !== 'false') {
+      if (config.$cache && type === 'init') {
         Api.writeCacheConfig(config.uuid, result.data || [])
       }
 
diff --git a/src/tabviews/custom/components/card/balcony/index.jsx b/src/tabviews/custom/components/card/balcony/index.jsx
index fa7d47a..a383d6d 100644
--- a/src/tabviews/custom/components/card/balcony/index.jsx
+++ b/src/tabviews/custom/components/card/balcony/index.jsx
@@ -144,7 +144,7 @@
     if (config.wrap.datatype === 'dynamic') {
       if (config.timer) {
         this.timer = new TimerTask()
-        this.timer.init(config.uuid, config.timer, config.timerRepeats, () => {this.loadData(true)})
+        this.timer.init(config.uuid, config.timer, config.timerRepeats, () => {this.loadData('timer')})
       }
 
       this.initExec()
@@ -180,7 +180,7 @@
           Api.getLCacheConfig(config.uuid, config.$time).then(res => {
             if (!res.valid && config.setting.onload === 'true') {
               setTimeout(() => {
-                this.loadData()
+                this.loadData('init')
               }, config.setting.delay || 0)
             }
   
@@ -206,7 +206,7 @@
 
         if (config.setting.onload === 'true') {
           setTimeout(() => {
-            this.loadData()
+            this.loadData('init')
           }, config.setting.delay || 0)
         }
       }
@@ -354,7 +354,7 @@
     this.loadData()
   }
 
-  async loadData (hastimer) {
+  async loadData (type) {
     const { config, arr_field, BID, BData } = this.state
 
     if (config.wrap.datatype === 'public') {
@@ -377,7 +377,7 @@
 
     let searches = []
 
-    if (!hastimer) {
+    if (type !== 'timer') {
       this.setState({
         loading: true
       })
@@ -391,7 +391,7 @@
       let _data = {}
 
       this.loaded = true
-      if (config.$cache && config.setting.onload !== 'false') {
+      if (config.$cache && type === 'init') {
         Api.writeCacheConfig(config.uuid, result.data || [])
       }
 
diff --git a/src/tabviews/custom/components/card/data-card/index.jsx b/src/tabviews/custom/components/card/data-card/index.jsx
index f629d61..c727c59 100644
--- a/src/tabviews/custom/components/card/data-card/index.jsx
+++ b/src/tabviews/custom/components/card/data-card/index.jsx
@@ -263,7 +263,7 @@
           Api.getLCacheConfig(config.uuid, config.$time).then(res => {
             if (!res.valid && config.setting.onload === 'true') {
               setTimeout(() => {
-                this.loadData()
+                this.loadData('', 'init')
               }, config.setting.delay || 0)
             }
 
@@ -311,7 +311,7 @@
 
         if (config.setting.onload === 'true') {
           setTimeout(() => {
-            this.loadData()
+            this.loadData('', 'init')
           }, config.setting.delay || 0)
         }
       }
@@ -764,7 +764,7 @@
       }
 
       this.loaded = true
-      if (config.$cache && pageIndex === 1 && config.setting.onload !== 'false') {
+      if (config.$cache && type === 'init') {
         Api.writeCacheConfig(config.uuid, result.data || [])
       }
 
diff --git a/src/tabviews/custom/components/card/double-data-card/index.jsx b/src/tabviews/custom/components/card/double-data-card/index.jsx
index 4ae9acd..6738f88 100644
--- a/src/tabviews/custom/components/card/double-data-card/index.jsx
+++ b/src/tabviews/custom/components/card/double-data-card/index.jsx
@@ -288,7 +288,7 @@
         Api.getLCacheConfig(config.uuid, config.$time).then(res => {
           if (!res.valid) {
             setTimeout(() => {
-              this.loadData()
+              this.loadData('', 'init')
             }, config.setting.delay || 0)
           }
 
@@ -304,7 +304,7 @@
         })
 
         setTimeout(() => {
-          this.loadData()
+          this.loadData('', 'init')
         }, config.setting.delay || 0)
       }
     } else {
@@ -608,7 +608,7 @@
       }
 
       this.loaded = true
-      if (config.$cache && pageIndex === 1 && config.setting.onload !== 'false') {
+      if (config.$cache && type === 'init') {
         Api.writeCacheConfig(config.uuid, result.data || [])
       }
 
diff --git a/src/tabviews/custom/components/card/prop-card/index.jsx b/src/tabviews/custom/components/card/prop-card/index.jsx
index dbb8131..2dcd2c2 100644
--- a/src/tabviews/custom/components/card/prop-card/index.jsx
+++ b/src/tabviews/custom/components/card/prop-card/index.jsx
@@ -146,7 +146,7 @@
 
     if (config.timer && config.wrap.datatype === 'dynamic') {
       this.timer = new TimerTask()
-      this.timer.init(config.uuid, config.timer, config.timerRepeats, () => {this.loadData(true)})
+      this.timer.init(config.uuid, config.timer, config.timerRepeats, () => {this.loadData('timer')})
     }
 
     this.initExec()
@@ -182,7 +182,7 @@
             Api.getLCacheConfig(config.uuid, config.$time).then(res => {
               if (!res.valid && config.setting.onload === 'true') {
                 setTimeout(() => {
-                  this.loadData()
+                  this.loadData('init')
                 }, config.setting.delay || 0)
               }
 
@@ -221,7 +221,7 @@
   
           if (config.setting.onload === 'true') {
             setTimeout(() => {
-              this.loadData()
+              this.loadData('init')
             }, config.setting.delay || 0)
           } else if (this.loaded) {
             if (config.wrap.goback === 'true' && data.$$empty) {
@@ -429,7 +429,7 @@
     if ((position === 'mainline' || position === 'popclose') && config.setting.supModule && BID) { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
       MKEmitter.emit('reloadData', config.setting.supModule, BID)
     } else {
-      this.loadData(false, btn)
+      this.loadData('', btn)
     }
   }
 
@@ -487,7 +487,7 @@
     this.loadData()
   }
 
-  async loadData (hastimer, btn) {
+  async loadData (type, btn) {
     const { config, arr_field, BID, BData, selected } = this.state
 
     if (config.wrap.datatype === 'public') {
@@ -521,7 +521,7 @@
       return
     }
 
-    if (!hastimer) {
+    if (type !== 'timer') {
       this.setState({
         loading: true
       })
@@ -535,7 +535,7 @@
       let _data = {}
 
       this.loaded = true
-      if (config.$cache && config.setting.onload !== 'false') {
+      if (config.$cache && type === 'init') {
         Api.writeCacheConfig(config.uuid, result.data || [])
       }
 
diff --git a/src/tabviews/custom/components/card/table-card/index.jsx b/src/tabviews/custom/components/card/table-card/index.jsx
index 694ea66..f0af9bf 100644
--- a/src/tabviews/custom/components/card/table-card/index.jsx
+++ b/src/tabviews/custom/components/card/table-card/index.jsx
@@ -163,7 +163,7 @@
           Api.getLCacheConfig(config.uuid, config.$time).then(res => {
             if (!res.valid && config.setting.onload === 'true') {
               setTimeout(() => {
-                this.loadData()
+                this.loadData('init')
               }, config.setting.delay || 0)
             }
   
@@ -197,7 +197,7 @@
 
         if (config.setting.onload === 'true') {
           setTimeout(() => {
-            this.loadData()
+            this.loadData('init')
           }, config.setting.delay || 0)
         }
       }
@@ -376,7 +376,7 @@
       }
 
       this.loaded = true
-      if (config.$cache && pageIndex === 1 && config.setting.onload !== 'false') {
+      if (config.$cache && type === 'init') {
         Api.writeCacheConfig(config.uuid, result.data || [])
       }
 
diff --git a/src/tabviews/custom/components/carousel/data-card/index.jsx b/src/tabviews/custom/components/carousel/data-card/index.jsx
index bd06661..da5ef60 100644
--- a/src/tabviews/custom/components/carousel/data-card/index.jsx
+++ b/src/tabviews/custom/components/carousel/data-card/index.jsx
@@ -150,7 +150,7 @@
           Api.getLCacheConfig(config.uuid, config.$time).then(res => {
             if (!res.valid && config.setting.onload === 'true') {
               setTimeout(() => {
-                this.loadData()
+                this.loadData('init')
               }, config.setting.delay || 0)
             }
   
@@ -188,7 +188,7 @@
 
         if (config.setting.onload === 'true') {
           setTimeout(() => {
-            this.loadData()
+            this.loadData('init')
           }, config.setting.delay || 0)
         } else if (this.loaded) {
           this.openModal()
@@ -356,7 +356,7 @@
     let result = await Api.genericInterface(param)
     if (result.status) {
       this.loaded = true
-      if (config.$cache && config.setting.onload !== 'false') {
+      if (config.$cache && type === 'init') {
         Api.writeCacheConfig(config.uuid, result.data || [])
       }
 
diff --git a/src/tabviews/custom/components/carousel/prop-card/index.jsx b/src/tabviews/custom/components/carousel/prop-card/index.jsx
index bf810fa..3c91f7b 100644
--- a/src/tabviews/custom/components/carousel/prop-card/index.jsx
+++ b/src/tabviews/custom/components/carousel/prop-card/index.jsx
@@ -149,7 +149,7 @@
             Api.getLCacheConfig(config.uuid, config.$time).then(res => {
               if (!res.valid && config.setting.onload === 'true') {
                 setTimeout(() => {
-                  this.loadData()
+                  this.loadData('init')
                 }, config.setting.delay || 0)
               }
     
@@ -177,7 +177,7 @@
   
           if (config.setting.onload === 'true') {
             setTimeout(() => {
-              this.loadData()
+              this.loadData('init')
             }, config.setting.delay || 0)
           } else if (this.loaded) {
             this.openModal()
@@ -358,7 +358,7 @@
       let _data = {}
 
       this.loaded = true
-      if (config.$cache && config.setting.onload !== 'false') {
+      if (config.$cache && type === 'init') {
         Api.writeCacheConfig(config.uuid, result.data || [])
       }
 
diff --git a/src/tabviews/custom/components/chart/antv-G6/index.jsx b/src/tabviews/custom/components/chart/antv-G6/index.jsx
index d009353..e0084f9 100644
--- a/src/tabviews/custom/components/chart/antv-G6/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-G6/index.jsx
@@ -1034,7 +1034,7 @@
           Api.getLCacheConfig(config.uuid, config.$time).then(res => {
             if (!res.valid && config.setting.onload === 'true') {
               setTimeout(() => {
-                this.loadData()
+                this.loadData('init')
               }, config.setting.delay || 0)
             }
   
@@ -1058,7 +1058,7 @@
 
         if (config.setting.onload === 'true') {
           setTimeout(() => {
-            this.loadData()
+            this.loadData('init')
           }, config.setting.delay || 0)
         } else if (this.loaded) {
           this.handleData()
@@ -1125,7 +1125,7 @@
     }
   }
 
-  async loadData () {
+  async loadData (type) {
     const { config, arr_field, BID } = this.state
 
     if (config.setting.supModule && !BID) { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇�
@@ -1155,7 +1155,7 @@
 
     let result = await Api.genericInterface(param)
     if (result.status) {
-      if (config.$cache && config.setting.onload !== 'false') {
+      if (config.$cache && type === 'init') {
         Api.writeCacheConfig(config.uuid, result.data || [])
       }
 
diff --git a/src/tabviews/custom/components/chart/antv-X6/index.jsx b/src/tabviews/custom/components/chart/antv-X6/index.jsx
index f27ca16..781b43c 100644
--- a/src/tabviews/custom/components/chart/antv-X6/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-X6/index.jsx
@@ -386,6 +386,7 @@
     node: null,
     loading: false,
     status: 0,
+    flowname: '',
     orgs: []
   }
 
@@ -620,6 +621,7 @@
 
       this.setState({
         status: item.status || 0,
+        flowname: item.works_flow_name,
         loading: false
       })
 
@@ -995,11 +997,21 @@
       
       this.setState({node: null})
     })
+    graph.on('edge:connected', ({ isNew, edge }) => {
+      if (!isNew) return
+
+      let target = edge.getTargetCell()
+      let mkdata = target ? target.prop('mkdata') : null
+
+      if (mkdata) {
+        edge.prop('mkdata', {status: mkdata.status, statusName: mkdata.statusName})
+      }
+    })
     
     const r1 = graph.createNode({
       shape: 'mk-rect',
       mknode: 'start',
-      mkdata: {status: 0, statusName: '寮�濮�'},
+      mkdata: {status: 0, statusName: '鏈彁浜�'},
       attrs: {
         body: {
           rx: 20,
@@ -1097,7 +1109,7 @@
     const r8 = graph.createNode({
       shape: 'mk-rect',
       mknode: 'end',
-      mkdata: {status: '', statusName: '缁撴潫'},
+      mkdata: {status: 888, statusName: '宸插畬鎴�'},
       attrs: {
         body: {
           rx: 20,
@@ -1967,7 +1979,7 @@
   }
 
   render() {
-    const { loading, config, node, orgs, status } = this.state
+    const { loading, config, node, orgs, status, flowname } = this.state
 
     let style = {...config.style}
 
@@ -2033,6 +2045,7 @@
               <QuestionCircleOutlined />
             </Tooltip>
           </div>
+          <div className="flow-name">{flowname}</div>
           <div className="right-tool">
             <Tooltip title="鍚敤/鍋滅敤">
               <Switch size="small" style={{marginRight: '10px'}} checked={status === 10} onChange={this.changeStatus} />
diff --git a/src/tabviews/custom/components/chart/antv-X6/index.scss b/src/tabviews/custom/components/chart/antv-X6/index.scss
index 58cd11f..ccaccfb 100644
--- a/src/tabviews/custom/components/chart/antv-X6/index.scss
+++ b/src/tabviews/custom/components/chart/antv-X6/index.scss
@@ -7,6 +7,7 @@
   background-size: cover;
   
   .mk-toolbar {
+    position: relative;
     width: 100%;
     height: 40px;
     border-bottom: 1px solid #dfe3e8;
@@ -20,6 +21,14 @@
         cursor: pointer;
       }
     }
+    .flow-name {
+      position: absolute;
+      left: 50%;
+      top: 6px;
+      font-size: 16px;
+      color: rgba(0, 0, 0, 0.85);
+      transform: translateX(-50%);
+    }
     .right-tool {
       float: right;
       line-height: 40px;
diff --git a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.jsx b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.jsx
index 34ac0c0..de0e111 100644
--- a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.jsx
@@ -494,7 +494,7 @@
           <Row>{this.getFields()}</Row>
         </Form>
         <Modal
-          title="鑺傜偣缂栬緫"
+          title={mknode && mknode.shape === 'edge' ? '杩炵嚎缂栬緫' : '鑺傜偣缂栬緫'}
           visible={visible}
           closable={false}
           maskClosable={false}
diff --git a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss
index 53361ec..893aaf2 100644
--- a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss
+++ b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/index.scss
@@ -138,6 +138,22 @@
   }
 }
 .member-transfer {
+  .mk-tree {
+    display: inline-block!important;
+    .circle {
+      position: relative;
+      top: 1px;
+      right: 4px;
+      display: inline-block!important;
+      width: 12px;
+      height: 12px;
+      background: #1890ff;
+      border-radius: 50%;
+    }
+    .green.circle {
+      background: #52c41a;
+    }
+  }
   .ant-transfer-list:first-child {
     width: 60%;
   }
diff --git a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx
index 37827b0..65f565d 100644
--- a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx
+++ b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/memberform.jsx
@@ -35,7 +35,7 @@
       targetKeys={targetKeys}
       dataSource={transferDataSource}
       className="member-transfer"
-      titles={['鍏ㄩ儴浜哄憳', '宸查��']}
+      titles={[<span className="mk-tree"><span className="circle"></span>缁勭粐鏈烘瀯</span>, <span className="mk-tree"><span className="circle green"></span>宸查��</span>]}
       render={item => item.title}
       showSelectAll={false}
     >
@@ -187,7 +187,7 @@
           onCancel={() => this.setState({visible: false})}
           destroyOnClose
         >
-          <Search onSearch={this.search}/>
+          <Search onSearch={this.search} enterButton/>
           <TreeTransfer dataSource={orgs} targetKeys={targetKeys} onChange={this.onChange} />
         </Modal>
       </>
diff --git a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx
index de23978..e155c71 100644
--- a/src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx
+++ b/src/tabviews/custom/components/chart/antv-X6/nodeupdate/nodeform.jsx
@@ -54,7 +54,7 @@
           <Col span={12}>
             <Form.Item label="鐘舵�佸��">
               {getFieldDecorator('status', {
-                initialValue: data.status === undefined ? 0 : data.status,
+                initialValue: data.status,
                 rules: [
                   {
                     required: true,
@@ -89,7 +89,7 @@
               )}
             </Form.Item>
           </Col> : null}
-          {nodetype === 'node' ? <Col span={12}>
+          {nodetype === 'edge' ? <Col span={12}>
             <Form.Item label="璁剧疆瀹℃壒浜�">
               {getFieldDecorator('approver', {
                 initialValue: data.approver || 'member'
@@ -102,10 +102,10 @@
               )}
             </Form.Item>
           </Col> : null}
-          {nodetype === 'node' ? <Col span={12}>
+          {nodetype === 'edge' ? <Col span={12}>
             <Form.Item label="瀹℃壒鏂瑰紡">
               {getFieldDecorator('approvalMethod', {
-                initialValue: data.approvalMethod || 'countersign'
+                initialValue: data.approvalMethod || 'orsign'
               })(
                 <Radio.Group>
                   <Radio value="countersign">浼氱</Radio>
@@ -114,7 +114,7 @@
               )}
             </Form.Item>
           </Col> : null}
-          <Col span={12}>
+          {nodetype === 'edge' ? <Col span={12}>
             <Form.Item label="瀹℃壒浜�">
               {getFieldDecorator('members', {
                 initialValue: data.members || [],
@@ -126,8 +126,8 @@
                 <MemberForm orgs={orgs} title="瀹℃壒浜�"/>
               )}
             </Form.Item>
-          </Col>
-          <Col span={12}>
+          </Col> : null}
+          {nodetype === 'edge' ? <Col span={12}>
             <Form.Item label="鎶勯�佷汉">
               {getFieldDecorator('copys', {
                 initialValue: data.copys || []
@@ -135,7 +135,7 @@
                 <MemberForm orgs={orgs} title="鎶勯�佷汉"/>
               )}
             </Form.Item>
-          </Col>
+          </Col> : null}
           <Col span={24}>
             <Form.Item label="澶囨敞">
               {getFieldDecorator('remark', {
diff --git a/src/tabviews/custom/components/chart/antv-bar-line/index.jsx b/src/tabviews/custom/components/chart/antv-bar-line/index.jsx
index 0057c07..36cdc3f 100644
--- a/src/tabviews/custom/components/chart/antv-bar-line/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-bar-line/index.jsx
@@ -374,7 +374,7 @@
     if (config.timer) {
       this.timer = new TimerTask()
       this.timer.init(config.uuid, config.timer, config.timerRepeats, () => {
-        this.loadData(true)
+        this.loadData('timer')
       })
     }
 
@@ -407,7 +407,7 @@
           Api.getLCacheConfig(config.uuid, config.$time).then(res => {
             if (!res.valid && config.setting.onload === 'true') {
               setTimeout(() => {
-                this.loadData()
+                this.loadData('init')
               }, config.setting.delay || 0)
             }
   
@@ -431,7 +431,7 @@
 
         if (config.setting.onload === 'true') {
           setTimeout(() => {
-            this.loadData()
+            this.loadData('init')
           }, config.setting.delay || 0)
         } else if (this.loaded) {
           this.handleData()
@@ -544,7 +544,7 @@
   /**
    * @description 鏁版嵁鍔犺浇
    */
-  async loadData (hastimer) {
+  async loadData (type) {
     const { config, arr_field, BID, search } = this.state
 
     if (config.setting.supModule && !BID) { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇�
@@ -571,7 +571,7 @@
       return
     }
 
-    if (!hastimer) {
+    if (type !== 'timer') {
       this.setState({
         loading: true
       })
@@ -582,7 +582,7 @@
 
     let result = await Api.genericInterface(param)
     if (result.status) {
-      if (config.$cache && config.setting.onload !== 'false') {
+      if (config.$cache && type === 'init') {
         Api.writeCacheConfig(config.uuid, result.data || [])
       }
 
diff --git a/src/tabviews/custom/components/chart/antv-dashboard/index.jsx b/src/tabviews/custom/components/chart/antv-dashboard/index.jsx
index d60f344..e60f4cf 100644
--- a/src/tabviews/custom/components/chart/antv-dashboard/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-dashboard/index.jsx
@@ -146,7 +146,7 @@
     if (config.timer) {
       this.timer = new TimerTask()
       this.timer.init(config.uuid, config.timer, config.timerRepeats, () => {
-        this.loadData(true)
+        this.loadData('timer')
       })
     }
 
@@ -177,7 +177,7 @@
           Api.getLCacheConfig(config.uuid, config.$time).then(res => {
             if (!res.valid && config.setting.onload === 'true') {
               setTimeout(() => {
-                this.loadData()
+                this.loadData('init')
               }, config.setting.delay || 0)
             }
   
@@ -217,7 +217,7 @@
 
         if (config.setting.onload === 'true') {
           setTimeout(() => {
-            this.loadData()
+            this.loadData('init')
           }, config.setting.delay || 0)
         } else if (this.loaded) {
           this.handleData()
@@ -300,7 +300,7 @@
     }, 100)
   }
 
-  async loadData (hastimer) {
+  async loadData (type) {
     const { config, arr_field, BID } = this.state
 
     if (config.setting.supModule && !BID) { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇�
@@ -329,7 +329,7 @@
       return
     }
 
-    if (!hastimer) {
+    if (type !== 'timer') {
       this.setState({
         loading: true
       })
@@ -340,7 +340,7 @@
 
     let result = await Api.genericInterface(param)
     if (result.status) {
-      if (config.$cache && config.setting.onload !== 'false') {
+      if (config.$cache && type === 'init') {
         Api.writeCacheConfig(config.uuid, result.data || [])
       }
 
diff --git a/src/tabviews/custom/components/chart/antv-pie/index.jsx b/src/tabviews/custom/components/chart/antv-pie/index.jsx
index 3ccda37..ab5d785 100644
--- a/src/tabviews/custom/components/chart/antv-pie/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-pie/index.jsx
@@ -118,7 +118,7 @@
     if (config.timer) {
       this.timer = new TimerTask()
       this.timer.init(config.uuid, config.timer, config.timerRepeats, () => {
-        this.loadData(true)
+        this.loadData('timer')
       })
     }
 
@@ -149,7 +149,7 @@
           Api.getLCacheConfig(config.uuid, config.$time).then(res => {
             if (!res.valid && config.setting.onload === 'true') {
               setTimeout(() => {
-                this.loadData()
+                this.loadData('init')
               }, config.setting.delay || 0)
             }
   
@@ -173,7 +173,7 @@
 
         if (config.setting.onload === 'true') {
           setTimeout(() => {
-            this.loadData()
+            this.loadData('init')
           }, config.setting.delay || 0)
         } else if (this.loaded) {
           this.handleData()
@@ -259,7 +259,7 @@
     }
   }
 
-  async loadData (hastimer) {
+  async loadData (type) {
     const { config, arr_field, search, BID } = this.state
 
     if (config.setting.supModule && !BID) { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇�
@@ -286,7 +286,7 @@
       return
     }
 
-    if (!hastimer) {
+    if (type !== 'timer') {
       this.setState({
         loading: true
       })
@@ -297,7 +297,7 @@
 
     let result = await Api.genericInterface(param)
     if (result.status) {
-      if (config.$cache && config.setting.onload !== 'false') {
+      if (config.$cache && type === 'init') {
         Api.writeCacheConfig(config.uuid, result.data || [])
       }
       this.loaded = true
diff --git a/src/tabviews/custom/components/chart/antv-scatter/index.jsx b/src/tabviews/custom/components/chart/antv-scatter/index.jsx
index 3fb8d8b..a5a495f 100644
--- a/src/tabviews/custom/components/chart/antv-scatter/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-scatter/index.jsx
@@ -112,7 +112,7 @@
     if (config.timer) {
       this.timer = new TimerTask()
       this.timer.init(config.uuid, config.timer, config.timerRepeats, () => {
-        this.loadData(true)
+        this.loadData('timer')
       })
     }
 
@@ -145,7 +145,7 @@
           Api.getLCacheConfig(config.uuid, config.$time).then(res => {
             if (!res.valid && config.setting.onload === 'true') {
               setTimeout(() => {
-                this.loadData()
+                this.loadData('init')
               }, config.setting.delay || 0)
             }
   
@@ -173,7 +173,7 @@
 
         if (config.setting.onload === 'true') {
           setTimeout(() => {
-            this.loadData()
+            this.loadData('init')
           }, config.setting.delay || 0)
         } else if (this.loaded) {
           this.handleData()
@@ -288,7 +288,7 @@
   /**
    * @description 鏁版嵁鍔犺浇
    */
-  async loadData (hastimer) {
+  async loadData (type) {
     const { config, arr_field, BID, search } = this.state
 
     if (config.setting.supModule && !BID) { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇�
@@ -318,7 +318,7 @@
       return
     }
 
-    if (!hastimer) {
+    if (type !== 'timer') {
       this.setState({
         loading: true
       })
@@ -329,7 +329,7 @@
 
     let result = await Api.genericInterface(param)
     if (result.status) {
-      if (config.$cache && config.setting.onload !== 'false') {
+      if (config.$cache && type === 'init') {
         Api.writeCacheConfig(config.uuid, result.data || [])
       }
       this.loaded = true
diff --git a/src/tabviews/custom/components/chart/custom-chart/index.jsx b/src/tabviews/custom/components/chart/custom-chart/index.jsx
index e98f37f..de60a68 100644
--- a/src/tabviews/custom/components/chart/custom-chart/index.jsx
+++ b/src/tabviews/custom/components/chart/custom-chart/index.jsx
@@ -101,7 +101,7 @@
     if (config.timer) {
       this.timer = new TimerTask()
       this.timer.init(config.uuid, config.timer, config.timerRepeats, () => {
-        this.loadData(true)
+        this.loadData('timer')
       })
     }
 
@@ -134,7 +134,7 @@
           Api.getLCacheConfig(config.uuid, config.$time).then(res => {
             if (!res.valid && config.setting.onload === 'true') {
               setTimeout(() => {
-                this.loadData()
+                this.loadData('init')
               }, config.setting.delay || 0)
             }
   
@@ -162,7 +162,7 @@
 
         if (config.setting.onload === 'true') {
           setTimeout(() => {
-            this.loadData()
+            this.loadData('init')
           }, config.setting.delay || 0)
         } else if (this.loaded) {
           this.handleData()
@@ -279,7 +279,7 @@
   /**
    * @description 鏁版嵁鍔犺浇
    */
-  async loadData (hastimer) {
+  async loadData (type) {
     const { config, arr_field, BID, search } = this.state
 
     if (config.setting.supModule && !BID) { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇�
@@ -311,7 +311,7 @@
       return
     }
 
-    if (!hastimer) {
+    if (type !== 'timer') {
       this.setState({
         loading: true
       })
@@ -322,7 +322,7 @@
 
     let result = await Api.genericInterface(param)
     if (result.status) {
-      if (config.$cache && config.setting.onload !== 'false') {
+      if (config.$cache && type === 'init') {
         Api.writeCacheConfig(config.uuid, result.data || [])
       }
       this.loaded = true
diff --git a/src/tabviews/custom/components/code/sand-box/index.jsx b/src/tabviews/custom/components/code/sand-box/index.jsx
index 560976e..4119dea 100644
--- a/src/tabviews/custom/components/code/sand-box/index.jsx
+++ b/src/tabviews/custom/components/code/sand-box/index.jsx
@@ -116,7 +116,7 @@
             Api.getLCacheConfig(config.uuid, config.$time).then(res => {
               if (!res.valid && config.setting.onload === 'true') {
                 setTimeout(() => {
-                  this.loadData()
+                  this.loadData('init')
                 }, config.setting.delay || 0)
               }
     
@@ -142,7 +142,7 @@
   
           if (config.setting.onload === 'true') {
             setTimeout(() => {
-              this.loadData()
+              this.loadData('init')
             }, config.setting.delay || 0)
           } else if (this.loaded) {
             this.renderView()
@@ -204,7 +204,7 @@
     this.loadData()
   }
 
-  async loadData () {
+  async loadData (type) {
     const { config, arr_field, BID } = this.state
 
     if (config.wrap.datatype === 'static') {
@@ -243,7 +243,7 @@
       let _data = result.data || []
 
       this.loaded = true
-      if (config.$cache && config.setting.onload !== 'false') {
+      if (config.$cache && type === 'init') {
         Api.writeCacheConfig(config.uuid, result.data || [])
       }
 
diff --git a/src/tabviews/custom/components/table/normal-table/index.jsx b/src/tabviews/custom/components/table/normal-table/index.jsx
index ae27a14..9b114c1 100644
--- a/src/tabviews/custom/components/table/normal-table/index.jsx
+++ b/src/tabviews/custom/components/table/normal-table/index.jsx
@@ -217,7 +217,7 @@
           Api.getLCacheConfig(config.uuid, config.$time).then(res => {
             if (!res.valid && config.setting.onload === 'true') {
               setTimeout(() => {
-                this.loadmaindata()
+                this.loadmaindata(false, 'true', '', 'init')
               }, config.setting.delay || 0)
             }
   
@@ -279,7 +279,7 @@
 
         if (config.setting.onload === 'true') {
           setTimeout(() => {
-            this.loadmaindata()
+            this.loadmaindata(false, 'true', '', 'init')
             this.getStatFieldsValue()
           }, config.setting.delay || 0)
         }
@@ -400,7 +400,7 @@
     let result = await Api.genericInterface(param)
     if (result.status) {
       this.loaded = true
-      if (config.$cache && pageIndex === 1 && config.setting.onload !== 'false') {
+      if (config.$cache && type === 'init') {
         Api.writeCacheConfig(config.uuid, result.data || [])
       }
 
diff --git a/src/tabviews/custom/components/timeline/normal-timeline/index.jsx b/src/tabviews/custom/components/timeline/normal-timeline/index.jsx
index ccff669..46af8a6 100644
--- a/src/tabviews/custom/components/timeline/normal-timeline/index.jsx
+++ b/src/tabviews/custom/components/timeline/normal-timeline/index.jsx
@@ -123,7 +123,7 @@
     if (config.timer) {
       this.timer = new TimerTask()
       this.timer.init(config.uuid, config.timer, config.timerRepeats, () => {
-        this.loadData(true)
+        this.loadData('timer')
       })
     }
 
@@ -158,7 +158,7 @@
           Api.getLCacheConfig(config.uuid, config.$time).then(res => {
             if (!res.valid && config.setting.onload === 'true') {
               setTimeout(() => {
-                this.loadData()
+                this.loadData('init')
               }, config.setting.delay || 0)
             }
   
@@ -190,7 +190,7 @@
 
         if (config.setting.onload === 'true') {
           setTimeout(() => {
-            this.loadData()
+            this.loadData('init')
           }, config.setting.delay || 0)
         }
       }
@@ -317,7 +317,7 @@
     })
   }
 
-  async loadData (hastimer) {
+  async loadData (type) {
     const { config, arr_field, BID, BData } = this.state
     
     if (config.setting.supModule && !BID) { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇�
@@ -343,7 +343,7 @@
       return
     }
 
-    if (!hastimer) {
+    if (type !== 'timer') {
       this.setState({
         loading: true
       })
@@ -355,7 +355,7 @@
     let result = await Api.genericInterface(param)
     if (result.status) {
       this.loaded = true
-      if (config.$cache && config.setting.onload !== 'false') {
+      if (config.$cache && type === 'init') {
         Api.writeCacheConfig(config.uuid, result.data || [])
       }
 
diff --git a/src/tabviews/custom/components/tree/antd-tree/index.jsx b/src/tabviews/custom/components/tree/antd-tree/index.jsx
index a4fd24f..1d974f3 100644
--- a/src/tabviews/custom/components/tree/antd-tree/index.jsx
+++ b/src/tabviews/custom/components/tree/antd-tree/index.jsx
@@ -105,7 +105,7 @@
     if (config.timer) {
       this.timer = new TimerTask()
       this.timer.init(config.uuid, config.timer, config.timerRepeats, () => {
-        this.loadData(true)
+        this.loadData('timer')
       })
     }
 
@@ -138,7 +138,7 @@
           Api.getLCacheConfig(config.uuid, config.$time).then(res => {
             if (!res.valid && config.setting.onload === 'true') {
               setTimeout(() => {
-                this.loadData()
+                this.loadData('init')
               }, config.setting.delay || 0)
             }
   
@@ -164,7 +164,7 @@
 
         if (config.setting.onload === 'true') {
           setTimeout(() => {
-            this.loadData()
+            this.loadData('init')
           }, config.setting.delay || 0)
         } else if (this.loaded) {
           this.handleData()
@@ -272,7 +272,7 @@
   /**
    * @description 鏁版嵁鍔犺浇
    */
-  async loadData (hastimer) {
+  async loadData (type) {
     const { config, arr_field, BID } = this.state
 
     if (config.setting.supModule && !BID) { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇�
@@ -294,7 +294,7 @@
       return
     }
 
-    if (!hastimer) {
+    if (type !== 'timer') {
       this.setState({
         loading: true
       })
@@ -306,7 +306,7 @@
     let result = await Api.genericInterface(param)
     if (result.status) {
       this.loaded = true
-      if (config.$cache && config.setting.onload !== 'false') {
+      if (config.$cache && type === 'init') {
         Api.writeCacheConfig(config.uuid, result.data || [])
       }
 
diff --git a/src/tabviews/rolemanage/index.jsx b/src/tabviews/rolemanage/index.jsx
index d90d131..d6ea60a 100644
--- a/src/tabviews/rolemanage/index.jsx
+++ b/src/tabviews/rolemanage/index.jsx
@@ -6,7 +6,6 @@
 import md5 from 'md5'
 
 import Api from '@/api'
-import options from '@/store/options.js'
 import Utils from '@/utils/utils.js'
 import MKEmitter from '@/utils/events.js'
 import './index.scss'
@@ -74,7 +73,7 @@
   }
 
   getAppList = () => {
-    if (options.sysType !== 'local') return
+    if (window.GLOB.sysType !== 'local') return
 
     let param = {
       func: 's_get_kei'
@@ -843,7 +842,7 @@
   render() {
     const { activeKey, filterRoleList, applist, selectApp, selectSubApp, loading, loadingTree, loadingAppTree, primarykey, menuTrees, appTrees, checkedKeys, appCheckedKeys, menuOpenKeys, selectMenuTrees, selectAppTrees, selectRoleId, selectMenuOpenKeys, selectAppOpenKeys, submitloading, appOpenKeys } = this.state
 
-    let ismanage = options.sysType !== 'local'
+    let ismanage = window.GLOB.sysType !== 'local'
     
     return (
       <div className={'rolemanage' + (ismanage ? ' manager' : '')}>
diff --git a/src/tabviews/subtabtable/index.jsx b/src/tabviews/subtabtable/index.jsx
index 8e47675..878eeba 100644
--- a/src/tabviews/subtabtable/index.jsx
+++ b/src/tabviews/subtabtable/index.jsx
@@ -199,6 +199,8 @@
         item.$menuId = this.props.MenuID
         item.$old = true
 
+        if (item.OpenType === 'popview') return
+
         if (item.controlField) {
           if (/,/ig.test(item.controlVal)) {
             item.controlVals = item.controlVal.split(',')
diff --git a/src/tabviews/zshare/actionList/changeuserbutton/index.jsx b/src/tabviews/zshare/actionList/changeuserbutton/index.jsx
index 323c29c..8ceb5db 100644
--- a/src/tabviews/zshare/actionList/changeuserbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/changeuserbutton/index.jsx
@@ -130,14 +130,6 @@
         duration: 5
       })
       return
-    } else if (!setting.primaryKey) {
-      // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾槸鍚﹁缃富閿�
-      notification.warning({
-        top: 92,
-        message: '鏈缃富閿紒',
-        duration: 5
-      })
-      return
     }
 
     let primaryId = data[0][setting.primaryKey] || ''
diff --git a/src/tabviews/zshare/actionList/excelInbutton/index.jsx b/src/tabviews/zshare/actionList/excelInbutton/index.jsx
index 148e4bb..0104e10 100644
--- a/src/tabviews/zshare/actionList/excelInbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/excelInbutton/index.jsx
@@ -6,7 +6,6 @@
 
 import ExcelIn from './excelin'
 import Utils, { getExcelInSql } from '@/utils/utils.js'
-import options from '@/store/options.js'
 import Api from '@/api'
 import MKEmitter from '@/utils/events.js'
 import MkIcon from '@/components/mk-icon'
@@ -475,8 +474,8 @@
         _outParam = fromJS(res).toJS()
 
         if (window.GLOB.mkHS) {
-          if (btn.sysInterface === 'true' && options.cloudServiceApi) {
-            param.rduri = options.cloudServiceApi
+          if (btn.sysInterface === 'true' && window.GLOB.cloudServiceApi) {
+            param.rduri = window.GLOB.cloudServiceApi
             param.userid = sessionStorage.getItem('CloudUserID') || ''
             param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
           } else if (btn.sysInterface !== 'true') {
diff --git a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
index e18f480..a0b84fa 100644
--- a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
@@ -6,7 +6,6 @@
 import * as XLSX from 'sheetjs-style'
 
 import Utils from '@/utils/utils.js'
-import options from '@/store/options.js'
 import Api from '@/api'
 import MKEmitter from '@/utils/events.js'
 import MkIcon from '@/components/mk-icon'
@@ -239,8 +238,8 @@
         let param = this.getExcelCustomParam(viewParam.orderBy, viewParam.search)
 
         if (window.GLOB.mkHS) {
-          if (btn.sysInterface === 'true' && options.cloudServiceApi) {
-            param.rduri = options.cloudServiceApi
+          if (btn.sysInterface === 'true' && window.GLOB.cloudServiceApi) {
+            param.rduri = window.GLOB.cloudServiceApi
             param.userid = sessionStorage.getItem('CloudUserID') || ''
             param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
           } else if (btn.sysInterface !== 'true') {
@@ -300,8 +299,8 @@
             delete res.status
 
             if (window.GLOB.mkHS) {
-              if (btn.sysInterface === 'true' && options.cloudServiceApi) {
-                res.rduri = options.cloudServiceApi
+              if (btn.sysInterface === 'true' && window.GLOB.cloudServiceApi) {
+                res.rduri = window.GLOB.cloudServiceApi
                 res.userid = sessionStorage.getItem('CloudUserID') || ''
                 res.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
               } else if (btn.sysInterface !== 'true') {
@@ -384,8 +383,8 @@
         delete res.status
 
         if (window.GLOB.mkHS) {
-          if (btn.sysInterface === 'true' && options.cloudServiceApi) {
-            res.rduri = options.cloudServiceApi
+          if (btn.sysInterface === 'true' && window.GLOB.cloudServiceApi) {
+            res.rduri = window.GLOB.cloudServiceApi
             res.userid = sessionStorage.getItem('CloudUserID') || ''
             res.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
           } else if (btn.sysInterface !== 'true') {
@@ -472,8 +471,8 @@
       param = this.getExcelCustomParam(viewParam.orderBy, viewParam.search, true, pageIndex, pageSize)
 
       if (window.GLOB.mkHS) {
-        if (btn.sysInterface === 'true' && options.cloudServiceApi) {
-          param.rduri = options.cloudServiceApi
+        if (btn.sysInterface === 'true' && window.GLOB.cloudServiceApi) {
+          param.rduri = window.GLOB.cloudServiceApi
           param.userid = sessionStorage.getItem('CloudUserID') || ''
           param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
         } else if (btn.sysInterface !== 'true') {
@@ -1082,7 +1081,7 @@
     param.custom_script = param.custom_script.replace(/@typename@/ig, `'admin'`)
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
-    if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
+    if (window.GLOB.debugger === true || (window.debugger === true && window.GLOB.sysType !== 'cloud')) {
       param.custom_script && console.info(`${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${param.custom_script}`)
       LText && console.info(LText)
     }
diff --git a/src/tabviews/zshare/actionList/newpagebutton/index.jsx b/src/tabviews/zshare/actionList/newpagebutton/index.jsx
index 1d3ae5e..373ea78 100644
--- a/src/tabviews/zshare/actionList/newpagebutton/index.jsx
+++ b/src/tabviews/zshare/actionList/newpagebutton/index.jsx
@@ -112,7 +112,7 @@
 
     let data = record || selectedData || []
 
-    if (btn.Ot && btn.Ot !== 'notRequired' && data.length === 0) {
+    if (btn.Ot !== 'notRequired' && data.length === 0) {
       // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾暟鎹�
       notification.warning({
         top: 92,
@@ -152,13 +152,13 @@
 
     if (btn.pageTemplate === 'billprint') {
       _name = '鍗曟嵁鎵撳嵃'
-      if (btn.Ot === 'required' && data && data.length > 0) {
-        data.forEach((item, i) => {
+      if (btn.Ot === 'required') {
+        data.forEach(item => {
           let _id = item.$$uuid || ''
           let url = '#/billprint/' + window.btoa(window.encodeURIComponent(JSON.stringify({ id: _id, tempId: btn.printTemp, dataM: sessionStorage.getItem('dataM') })))
           window.open(url)
         })
-      } else if (btn.Ot === 'requiredOnce' && data && data.length > 0) {
+      } else if (btn.Ot === 'requiredOnce') {
         Id = data.map(item => item.$$uuid).filter(Boolean).join(',')
 
         window.open('#/billprint/' + window.btoa(window.encodeURIComponent(JSON.stringify({ id: Id, tempId: btn.printTemp, dataM: sessionStorage.getItem('dataM') }))))
diff --git a/src/tabviews/zshare/actionList/normalbutton/index.jsx b/src/tabviews/zshare/actionList/normalbutton/index.jsx
index 7ab6d6e..21b4dc9 100644
--- a/src/tabviews/zshare/actionList/normalbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -8,7 +8,6 @@
 
 import Api from '@/api'
 import Utils, { getSysDefaultSql } from '@/utils/utils.js'
-import options from '@/store/options.js'
 import asyncSpinComponent from '@/utils/asyncSpinComponent'
 import { updateForm } from '@/utils/utils-update.js'
 import MKEmitter from '@/utils/events.js'
@@ -266,14 +265,6 @@
       notification.warning({
         top: 92,
         message: '璇烽�夋嫨鍗曡鏁版嵁锛�',
-        duration: 5
-      })
-      return
-    } else if (!['requiredSgl', 'notRequired', 'requiredOnce', 'required'].includes(btn.Ot)) {
-      // 鏁版嵁閫夋嫨绫诲瀷鏍¢獙
-      notification.warning({
-        top: 92,
-        message: '鎸夐挳琛岃缃敊璇紒',
         duration: 5
       })
       return
@@ -1090,7 +1081,7 @@
               }, 600)
             }
 
-            this.triggerNote(res) // 娑堟伅
+            this.triggerNote(res, _param.ID) // 娑堟伅
             this.execSuccess(res)
           } else {
             this.execError(res)
@@ -1107,7 +1098,7 @@
             setTimeout(() => {
               Api.genericInterface(param).then(res => {
                 if (res.status) {
-                  this.triggerNote(res) // 娑堟伅
+                  this.triggerNote(res, param.ID) // 娑堟伅
                 }
                 resolve(res)
               }, (error) => {
@@ -1458,6 +1449,8 @@
 
     Api.genericInterface(param).then(res => {
       if (res.status) {
+        this.triggerNote(res, param.ID) // 娑堟伅
+
         if (params.length === 0) {
           this.execSuccess(res)
           _resolve()
@@ -1609,7 +1602,7 @@
       sql = sql.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`)
       sql = sql.replace(/@typename@/ig, `'admin'`)
 
-      if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
+      if (window.GLOB.debugger === true || (window.debugger === true && window.GLOB.sysType !== 'cloud')) {
         console.info(sql.replace(/\n\s{8}/ig, '\n'))
       }
 
@@ -1645,7 +1638,7 @@
         Sort: index + 1
       }))
 
-      if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
+      if (window.GLOB.debugger === true || (window.debugger === true && window.GLOB.sysType !== 'cloud')) {
         let sql = [...lineMap.values()].map(item => (`
           ${item.insert}
           ${item.selects.join(` union all
@@ -1671,7 +1664,7 @@
 
     Api.genericInterface(param).then(res => {
       if (res.status) {
-        this.triggerNote(res) // 娑堟伅
+        this.triggerNote(res, param.ID) // 娑堟伅
 
         if (params.length === 0) {
           this.execSuccess(res)
@@ -1705,7 +1698,7 @@
 
     Api.genericInterface(param).then(res => {
       if (res.status) {
-        this.triggerNote(res) // 娑堟伅
+        this.triggerNote(res, param.ID) // 娑堟伅
 
         if (params.length === 0) {
           this.execSuccess(res)
@@ -1727,7 +1720,7 @@
             return new Promise(resolve => {
               Api.genericInterface(unCheckParam).then(result => {
                 if (result.status) {
-                  _this.triggerNote(result) // 娑堟伅
+                  _this.triggerNote(result, param.ID) // 娑堟伅
           
                   if (params.length === 0) {
                     _this.execSuccess(result)
@@ -1835,8 +1828,8 @@
         if (window.GLOB.mainSystemApi) {
           result.rduri = window.GLOB.mainSystemApi
         }
-      } else if (btn.sysInterface === 'true' && options.cloudServiceApi) {
-        result.rduri = options.cloudServiceApi
+      } else if (btn.sysInterface === 'true' && window.GLOB.cloudServiceApi) {
+        result.rduri = window.GLOB.cloudServiceApi
         result.userid = sessionStorage.getItem('CloudUserID') || ''
         result.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
       } else if (btn.sysInterface !== 'true') {
@@ -1969,6 +1962,8 @@
 
     Api.genericInterface(param).then(res => {
       if (res.status) {
+        this.triggerNote(res, param.ID) // 娑堟伅
+
         // 涓�娆¤姹傛垚鍔燂紝杩涜涓嬩竴椤硅姹�
         if (params.length === 0) {
           this.execSuccess(res)
@@ -2219,15 +2214,19 @@
     }
   }
 
-  triggerNote = (res) => {
+  triggerNote = (res, ID) => {
     const { btn } = this.props
 
     if (!btn.verify) return
-    if (btn.verify.noteEnable !== 'true' && btn.verify.wxNote !== 'true') return
+    if (btn.verify.noteEnable !== 'true' && btn.verify.wxNote !== 'true' && btn.verify.printEnable !== 'true') return
 
     let id = ''
     if (btn.output) {
       id = res.mk_b_id || res[btn.output] || ''
+    }
+
+    if (btn.verify.printEnable === 'true') {
+      this.billPrint(id || ID)
     }
 
     if (!id) return
@@ -2251,6 +2250,16 @@
     }
   }
 
+  billPrint = (id) => {
+    const { btn } = this.props
+
+    if (!id) return
+
+    setTimeout(() => {
+      window.open('#/billprint/' + window.btoa(window.encodeURIComponent(JSON.stringify({ id: id, tempId: btn.verify.printTempId, dataM: sessionStorage.getItem('dataM') }))))
+    }, 500)
+  }
+
   sendWxMessage = (verify, id) => {
     if (!window.GLOB.nginx) {
       notification.warning({
@@ -2272,7 +2281,7 @@
 
     let domain1 = ''
     let domain2 = ''
-    if (['8IFltwzyKcu15iA8fqSyb6m-pMa88a3ZTu0No3vDHgo', 'LOB-bbt9jVncGh7IOAUdESh1Sgzcbt62UwOqSqcK9ok'].includes(verify.wxTemplateId) && options.sysType !== 'cloud') {
+    if (['8IFltwzyKcu15iA8fqSyb6m-pMa88a3ZTu0No3vDHgo', 'LOB-bbt9jVncGh7IOAUdESh1Sgzcbt62UwOqSqcK9ok'].includes(verify.wxTemplateId) && window.GLOB.sysType !== 'cloud') {
       domain1 = 'https://cloud.mk9h.cn/'
       domain2 = 'https://cloud.mk9h.cn:8443/'
     }
diff --git a/src/tabviews/zshare/actionList/popupbutton/index.jsx b/src/tabviews/zshare/actionList/popupbutton/index.jsx
index 24fbe8c..747af96 100644
--- a/src/tabviews/zshare/actionList/popupbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/popupbutton/index.jsx
@@ -169,13 +169,6 @@
         duration: 5
       })
       return
-    } else if (setting.tabType === 'subtab') {
-      notification.warning({
-        top: 92,
-        message: '寮圭獥椤甸潰涓嶆敮鎸佹璁剧疆锛�',
-        duration: 5
-      })
-      return
     }
 
     let _data = null
diff --git a/src/tabviews/zshare/actionList/printbutton/index.jsx b/src/tabviews/zshare/actionList/printbutton/index.jsx
index f89c377..2e24601 100644
--- a/src/tabviews/zshare/actionList/printbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/printbutton/index.jsx
@@ -6,7 +6,6 @@
 
 import Api from '@/api'
 import Utils from '@/utils/utils.js'
-import options from '@/store/options.js'
 import asyncSpinComponent from '@/utils/asyncSpinComponent'
 import { updateForm } from '@/utils/utils-update.js'
 import MKEmitter from '@/utils/events.js'
@@ -169,10 +168,6 @@
         message: '璇烽�夋嫨鍗曡鏁版嵁锛�',
         duration: 5
       })
-      return
-    } else if (!['requiredSgl', 'notRequired', 'requiredOnce', 'required'].includes(btn.Ot)) {
-      // 鏁版嵁閫夋嫨绫诲瀷鏍¢獙
-      this.actionSettingError()
       return
     } else if (!btn.verify || !btn.verify.printMode) {
       notification.warning({
@@ -1149,7 +1144,7 @@
     }
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
-    if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
+    if (window.GLOB.debugger === true || (window.debugger === true && window.GLOB.sysType !== 'cloud')) {
       _customScript && console.info(`${btn.logLabel ? `/*${btn.logLabel} 鑷畾涔夎剼鏈�*/\n` : ''}${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
       LText && console.info(`${btn.logLabel ? `/*${btn.logLabel} 鏁版嵁婧�*/\n` : ''}` + LText.replace(/\n\s{8}/ig, '\n'))
     }
@@ -1216,8 +1211,8 @@
       _outParam = JSON.parse(JSON.stringify(res))
 
       if (window.GLOB.mkHS) {
-        if (btn.sysInterface === 'true' && options.cloudServiceApi) {
-          res.rduri = options.cloudServiceApi
+        if (btn.sysInterface === 'true' && window.GLOB.cloudServiceApi) {
+          res.rduri = window.GLOB.cloudServiceApi
           res.userid = sessionStorage.getItem('CloudUserID') || ''
           res.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
         } else if (btn.sysInterface !== 'true') {
@@ -1960,17 +1955,6 @@
     if (btn.execError !== 'never') {
       MKEmitter.emit('refreshByButtonResult', btn.$menuId, btn.execError, btn, '', this.state.selines)
     }
-  }
-
-  /**
-   * @description 鎸夐挳閰嶇疆淇℃伅閿欒鎻愮ず
-   */
-  actionSettingError = () => {
-    notification.warning({
-      top: 92,
-      message: '鎸夐挳璁剧疆閿欒锛�',
-      duration: 5
-    })
   }
 
   handleModelConfig = (config) => {
diff --git a/src/tabviews/zshare/mutilform/index.jsx b/src/tabviews/zshare/mutilform/index.jsx
index 0cc3dbd..50058a4 100644
--- a/src/tabviews/zshare/mutilform/index.jsx
+++ b/src/tabviews/zshare/mutilform/index.jsx
@@ -6,7 +6,6 @@
 import moment from 'moment'
 
 import Api from '@/api'
-import options from '@/store/options.js'
 import { formRule } from '@/utils/option.js'
 import Utils from '@/utils/utils.js'
 import asyncComponent from '@/utils/asyncComponent'
@@ -601,7 +600,7 @@
       }
 
       if (deForms.length > 0) {
-        if (!window.GLOB.mkHS && options.sysType === 'local' && window.GLOB.systemType !== 'production') {
+        if (!window.GLOB.mkHS && window.GLOB.sysType === 'local' && window.GLOB.systemType !== 'production') {
           this.improveSimpleActionForm(deForms)
         } else {
           this.improveActionForm(deForms)
@@ -620,7 +619,7 @@
     let mainItems = []  // 浜戠鎴栧崟鐐规暟鎹�
     let localItems = [] // 鏈湴鏁版嵁
     let cache = action.setting.cache !== 'false'
-    let debug = window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')
+    let debug = window.GLOB.debugger === true || (window.debugger === true && window.GLOB.sysType !== 'cloud')
 
     let _sql = `Declare @mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20)  select @mk_departmentcode='${sessionStorage.getItem('departmentcode') || ''}',@mk_organization='${sessionStorage.getItem('organization') || ''}',@mk_user_type='${sessionStorage.getItem('mk_user_type') || ''}'\n`
     let _sso = _sql
@@ -707,8 +706,8 @@
 
       if (window.GLOB.mkHS) { // 浜戠鏁版嵁楠岃瘉
         mainparam.open_key = Utils.encryptOpenKey(mainparam.secretkey, mainparam.timestamp)
-        if (options.cloudServiceApi) {
-          mainparam.rduri = options.cloudServiceApi
+        if (window.GLOB.cloudServiceApi) {
+          mainparam.rduri = window.GLOB.cloudServiceApi
           mainparam.userid = sessionStorage.getItem('CloudUserID') || ''
           mainparam.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
         }
@@ -749,7 +748,7 @@
    */
   improveSimpleActionForm = (deForms) => {
     let cache = this.props.action.setting.cache !== 'false'
-    let debug = window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')
+    let debug = window.GLOB.debugger === true || (window.debugger === true && window.GLOB.sysType !== 'cloud')
     let _sql = `Declare @mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20)  select @mk_departmentcode='${sessionStorage.getItem('departmentcode') || ''}',@mk_organization='${sessionStorage.getItem('organization') || ''}',@mk_user_type='${sessionStorage.getItem('mk_user_type') || ''}'\n`
 
     let deffers = deForms.map((form, index) => {
diff --git a/src/tabviews/zshare/pageMessage/index.jsx b/src/tabviews/zshare/pageMessage/index.jsx
index 4ca2a3b..0d283a3 100644
--- a/src/tabviews/zshare/pageMessage/index.jsx
+++ b/src/tabviews/zshare/pageMessage/index.jsx
@@ -5,7 +5,6 @@
 
 import Api from '@/api'
 import Utils from '@/utils/utils.js'
-import options from '@/store/options.js'
 
 import './index.scss'
 
@@ -317,8 +316,8 @@
     const { debug, visible, data } = this.state
 
     return (
-      <div className={'page-message-wrap ' + (debug && options.sysType !== 'cloud' ? 'exist' : '')}>
-        {debug && options.sysType !== 'cloud' ? <Button
+      <div className={'page-message-wrap ' + (debug && window.GLOB.sysType !== 'cloud' ? 'exist' : '')}>
+        {debug && window.GLOB.sysType !== 'cloud' ? <Button
           icon="copy"
           shape="circle"
           className="page-message"
diff --git a/src/tabviews/zshare/settingcomponent/index.jsx b/src/tabviews/zshare/settingcomponent/index.jsx
index c3c366a..76f94ae 100644
--- a/src/tabviews/zshare/settingcomponent/index.jsx
+++ b/src/tabviews/zshare/settingcomponent/index.jsx
@@ -6,7 +6,6 @@
 import Api from '@/api'
 import MKEmitter from '@/utils/events.js'
 import { updateSubTable } from '@/utils/utils-update.js'
-import options from '@/store/options.js'
 import asyncComponent from '@/utils/asyncSpinComponent'
 import './index.scss'
 
@@ -517,7 +516,7 @@
 
     return (
       <div className="page-setting-wrap">
-        {options.sysType === 'local' ? <Button
+        {window.GLOB.sysType === 'local' ? <Button
           icon="setting"
           shape="circle"
           className="page-setting"
diff --git a/src/tabviews/zshare/tablenodes/index.jsx b/src/tabviews/zshare/tablenodes/index.jsx
index f46b98d..21c1919 100644
--- a/src/tabviews/zshare/tablenodes/index.jsx
+++ b/src/tabviews/zshare/tablenodes/index.jsx
@@ -6,7 +6,6 @@
 import Api from '@/api'
 import G6 from "@antv/g6"
 import Utils from '@/utils/utils.js'
-import options from '@/store/options.js'
 import './index.scss'
 
 const { Search } = Input
@@ -475,8 +474,8 @@
     const { visible, loading, empty, debug } = this.state
 
     return (
-      <div className={'page-message-wrap ' + (debug && options.sysType !== 'cloud' ? 'exist' : '')}>
-        {debug && options.sysType !== 'cloud' ? <Button
+      <div className={'page-message-wrap ' + (debug && window.GLOB.sysType !== 'cloud' ? 'exist' : '')}>
+        {debug && window.GLOB.sysType !== 'cloud' ? <Button
           icon="fork"
           shape="circle"
           className="page-message"
diff --git a/src/tabviews/zshare/topSearch/index.jsx b/src/tabviews/zshare/topSearch/index.jsx
index 7dfc5b2..1928e6a 100644
--- a/src/tabviews/zshare/topSearch/index.jsx
+++ b/src/tabviews/zshare/topSearch/index.jsx
@@ -7,7 +7,6 @@
 import md5 from 'md5'
 
 import Api from '@/api'
-import options from '@/store/options.js'
 import asyncComponent from '@/utils/asyncComponent'
 import asyncSpinComponent from '@/utils/asyncSpinComponent'
 import Utils from '@/utils/utils.js'
@@ -154,12 +153,12 @@
         if (item.resourceType === '1' && item.dataSource) {
           let _option = Utils.getSelectQueryOptions(item)
 
-          if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
+          if (window.GLOB.debugger === true || (window.debugger === true && window.GLOB.sysType !== 'cloud')) {
             console.info(_option.sql)
           }
 
           // 娴嬭瘯绯荤粺鍗曚釜璇锋眰
-          if (!window.GLOB.mkHS && options.sysType === 'local' && !window.GLOB.systemType) {
+          if (!window.GLOB.mkHS && window.GLOB.sysType === 'local' && !window.GLOB.systemType) {
             deForms.push({
               ...item,
               arr_field: _option.field,
@@ -217,7 +216,7 @@
       advanceValues,
       searchlist: _list
     }, () => {
-      if (!window.GLOB.mkHS && options.sysType === 'local' && window.GLOB.systemType !== 'production') {
+      if (!window.GLOB.mkHS && window.GLOB.sysType === 'local' && window.GLOB.systemType !== 'production') {
         this.improveSimpleSearch(deForms)
       } else if (mainItems.length > 0 || localItems.length > 0) {
         this.improveSearch(mainItems, localItems)
@@ -320,8 +319,8 @@
 
       if (window.GLOB.mkHS) { // 浜戠鏁版嵁楠岃瘉
         mainparam.open_key = Utils.encryptOpenKey(mainparam.secretkey, mainparam.timestamp)
-        if (options.cloudServiceApi) {
-          mainparam.rduri = options.cloudServiceApi
+        if (window.GLOB.cloudServiceApi) {
+          mainparam.rduri = window.GLOB.cloudServiceApi
           mainparam.userid = sessionStorage.getItem('CloudUserID') || ''
           mainparam.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
         }
diff --git a/src/templates/sharecomponent/tablecomponent/index.jsx b/src/templates/sharecomponent/tablecomponent/index.jsx
index 76ca891..5f6c49a 100644
--- a/src/templates/sharecomponent/tablecomponent/index.jsx
+++ b/src/templates/sharecomponent/tablecomponent/index.jsx
@@ -6,7 +6,6 @@
 import moment from 'moment'
 
 import Api from '@/api'
-import options from '@/store/options.js'
 import Utils from '@/utils/utils.js'
 import MKEmitter from '@/utils/events.js'
 import { queryTableSql } from '@/utils/option.js'
@@ -74,8 +73,8 @@
     param.secretkey = Utils.encrypt(param.LText, param.timestamp)
     param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) // 浜戠鏁版嵁楠岃瘉
 
-    if (options.cloudServiceApi) { // 涓斿瓨鍦ㄤ簯绔湴鍧�
-      param.rduri = options.cloudServiceApi
+    if (window.GLOB.cloudServiceApi) { // 涓斿瓨鍦ㄤ簯绔湴鍧�
+      param.rduri = window.GLOB.cloudServiceApi
       param.userid = sessionStorage.getItem('CloudUserID') || ''
       param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
     }
@@ -101,8 +100,8 @@
     let deffers = this.state.selectedTables.map((item, i) => {
       return new Promise(resolve => {
         let param = {func: 'sPC_Get_FieldName', TBName: item.TbName}
-        if (options.cloudServiceApi) { // 涓斿瓨鍦ㄤ簯绔湴鍧�
-          param.rduri = options.cloudServiceApi
+        if (window.GLOB.cloudServiceApi) { // 涓斿瓨鍦ㄤ簯绔湴鍧�
+          param.rduri = window.GLOB.cloudServiceApi
           param.userid = sessionStorage.getItem('CloudUserID') || ''
           param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
         }
diff --git a/src/templates/zshare/createinterface/index.jsx b/src/templates/zshare/createinterface/index.jsx
index 6dd56df..b5d117a 100644
--- a/src/templates/zshare/createinterface/index.jsx
+++ b/src/templates/zshare/createinterface/index.jsx
@@ -6,7 +6,6 @@
 
 import MutilForm from './mutilform'
 import Utils from '@/utils/utils.js'
-import options from '@/store/options.js'
 import { updateForm } from '@/utils/utils-update.js'
 import Api from '@/api'
 import './index.scss'
@@ -335,7 +334,7 @@
       Ltexttableparam: '',
       Ltext: '',
       menuType: menu.type,
-      systemType: options.sysType
+      systemType: window.GLOB.sysType
     }
 
     this.setState({
diff --git a/src/templates/zshare/verifycard/baseform/index.jsx b/src/templates/zshare/verifycard/baseform/index.jsx
index 00171d3..1395bea 100644
--- a/src/templates/zshare/verifycard/baseform/index.jsx
+++ b/src/templates/zshare/verifycard/baseform/index.jsx
@@ -15,6 +15,7 @@
     verify: PropTypes.object,
     unionFields: PropTypes.array,
     notes: PropTypes.array,
+    appType: PropTypes.any,
     onChange: PropTypes.func
   }
 
@@ -22,6 +23,7 @@
     wxTemps: [],
     selectTemp: null,
     miniTemps: [],
+    printTemps: []
   }
 
   componentDidMount() {
@@ -76,6 +78,11 @@
 
       this.resetTemps(wxTemps)
     }
+
+    let printTemps = sessionStorage.getItem('printTemps')
+    printTemps = printTemps ? JSON.parse(printTemps) : []
+
+    this.setState({printTemps})
   }
 
   resetTemps = (wxTemps) => {
@@ -126,6 +133,8 @@
     let error = ''
     if (verify.noteEnable === 'true' && !verify.noteCode) { // 寮�鍚煭淇℃椂锛岄渶瑕佹ā鏉跨紪鐮�
       error = '寮�鍚煭淇℃椂锛岄渶瑕侀�夋嫨鐭俊妯℃澘锛�'
+    } else if (verify.printEnable === 'true' && !verify.printTempId) {
+      error = '浣跨敤鍗曟嵁鎵撳嵃鏃讹紝闇�瑕侀�夋嫨鎵撳嵃妯℃澘锛�'
     } else if (verify.accountdate === 'true' && !verify.accountfield) {
       error = '寮�鍚处鏈熸椂锛岄渶瑕侀�夋嫨楠岃瘉鍏徃锛�'
     } else if (verify.wxNote === 'true') {
@@ -148,6 +157,9 @@
 
     if (_verify.noteEnable !== 'true') {
       _verify.noteCode = ''
+    }
+    if (_verify.printEnable !== 'true') {
+      _verify.printTempId = ''
     }
     if (_verify.accountdate !== 'true') {
       _verify.accountfield = ''
@@ -184,6 +196,14 @@
     const { verify } = this.props
 
     let _verify = {...verify, noteCode: val, noteId: option.props.id}
+
+    this.props.onChange(_verify)
+  }
+
+  onPrintIdChange = (val) => {
+    const { verify } = this.props
+
+    let _verify = {...verify, printTempId: val}
 
     this.props.onChange(_verify)
   }
@@ -264,8 +284,8 @@
   }
 
   render() {
-    const { unionFields, verify, notes, card } = this.props
-    const { wxTemps, selectTemp } = this.state
+    const { unionFields, verify, notes, card, appType } = this.props
+    const { wxTemps, selectTemp, printTemps } = this.state
     const formItemLayout = {
       labelCol: {
         xs: { span: 24 },
@@ -393,6 +413,31 @@
             </Form.Item>
           </Col> : null}
           <Col span={24}></Col>
+          {appType !== 'mob' ? <Col span={8}>
+            <Form.Item label={
+              <Tooltip placement="bottomLeft" title="浣跨敤鍗曟嵁鎵撳嵃鏃堕渶閫夋嫨鎵撳嵃妯℃澘锛岃烦杞墦鍗扮晫闈㈡椂ID浼樺厛浠庤繑鍥炲�间腑鑾峰彇锛岃繑鍥炲�兼病鏈夋椂浠庤閲岃幏鍙栥��">
+                <QuestionCircleOutlined className="mk-form-tip" />
+                鍗曟嵁鎵撳嵃
+              </Tooltip>
+            }>
+              <Radio.Group value={verify.printEnable} onChange={(e) => {this.onOptionChange(e.target.value, 'printEnable')}}>
+                <Radio value="true">寮�鍚�</Radio>
+                <Radio value="false">涓嶅紑鍚�</Radio>
+              </Radio.Group>
+            </Form.Item>
+          </Col> : null}
+          {verify.printEnable === 'true' ? <Col span={8}>
+            <Form.Item label="鎵撳嵃妯℃澘" required>
+              <Select value={verify.printTempId} onSelect={this.onPrintIdChange}>
+                {printTemps.map(option =>
+                  <Select.Option key={option.value} value={option.value}>
+                    {option.text}
+                  </Select.Option>
+                )}
+              </Select>
+            </Form.Item>
+          </Col> : null}
+          <Col span={24}></Col>
           <Col span={8}>
             <Form.Item label={
               <Tooltip placement="bottomLeft" title={'璇峰湪鏈嶅姟鍣ㄥ畬鎴愬叕浼楀彿閰嶇疆銆�'}>
diff --git a/src/templates/zshare/verifycard/index.jsx b/src/templates/zshare/verifycard/index.jsx
index f138596..cffd4a9 100644
--- a/src/templates/zshare/verifycard/index.jsx
+++ b/src/templates/zshare/verifycard/index.jsx
@@ -9,7 +9,6 @@
 
 import Api from '@/api'
 import Utils from '@/utils/utils.js'
-import options from '@/store/options.js'
 import BaseForm from './baseform'
 import UniqueForm from './uniqueform'
 import ContrastForm from './contrastform'
@@ -538,6 +537,7 @@
 
   UNSAFE_componentWillMount() {
     const { columns, config, card, btnTab } = this.props
+    const { appType } = this.state
     let _verify = fromJS(card.verify || {}).toJS()
 
     let _invalid = _verify.invalid
@@ -554,10 +554,11 @@
     }
 
     _verify.default = _verify.default || 'true'
-    _verify.wxNote = _verify.wxNote || 'false'         // 鍏紬鍙锋秷鎭帹閫佹槸鍚﹀紑鍚�
-    _verify.noteEnable = _verify.noteEnable || 'false' // 鐭俊鍙戦�佹槸鍚﹀紑鍚�
-    _verify.noteType = _verify.noteType || 'N'         // 鐭俊鍙戦�佹ā寮忥細Y锛堝疄鏃讹級銆丯锛堝畾鏃讹級
-    _verify.noteTemp = _verify.noteTemp || 'Y'         // 鐭俊鍙戦�佹ā鏉匡細Y锛堢浉鍚岋級銆丯锛堜笉鍚岋級
+    _verify.wxNote = _verify.wxNote || 'false'           // 鍏紬鍙锋秷鎭帹閫佹槸鍚﹀紑鍚�
+    _verify.noteEnable = _verify.noteEnable || 'false'   // 鐭俊鍙戦�佹槸鍚﹀紑鍚�
+    _verify.printEnable = _verify.printEnable || 'false' // 鍗曟嵁鎵撳嵃鏄惁寮�鍚�
+    _verify.noteType = _verify.noteType || 'N'           // 鐭俊鍙戦�佹ā寮忥細Y锛堝疄鏃讹級銆丯锛堝畾鏃讹級
+    _verify.noteTemp = _verify.noteTemp || 'Y'           // 鐭俊鍙戦�佹ā鏉匡細Y锛堢浉鍚岋級銆丯锛堜笉鍚岋級
     _verify.invalid = _invalid
     _verify.uniques = _verify.uniques || []
     _verify.contrasts = _verify.contrasts || []
@@ -569,6 +570,11 @@
     _verify.voucher = _verify.voucher || {enabled: false}
     _verify.scripts = _verify.scripts || []
     _verify.cbScripts = _verify.cbScripts || []
+
+    if (appType === 'mob') {
+      _verify.printEnable = 'false'
+      _verify.printTempId = ''
+    }
 
     if (window.GLOB.funcs && window.GLOB.funcs.length > 0) {
       window.GLOB.funcs.forEach(m => {
@@ -1059,8 +1065,8 @@
     mutilparam.secretkey = Utils.encrypt(mutilparam.LText, mutilparam.timestamp)
     mutilparam.open_key = Utils.encryptOpenKey(mutilparam.secretkey, mutilparam.timestamp)
 
-    if (options.cloudServiceApi) { // 浜戠璇锋眰
-      mutilparam.rduri = options.cloudServiceApi
+    if (window.GLOB.cloudServiceApi) { // 浜戠璇锋眰
+      mutilparam.rduri = window.GLOB.cloudServiceApi
       mutilparam.userid = sessionStorage.getItem('CloudUserID') || ''
       mutilparam.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
     }
@@ -1560,7 +1566,7 @@
               {verify.default === 'false' ? <span className="count-tip"><ExclamationOutlined style={{color: 'orange'}}/></span> : null}
             </span>
           } key="base">
-            <BaseForm card={card} unionFields={unionFields} setting={setting} verify={verify} notes={notes} onChange={(verify) => this.setState({verify})} wrappedComponentRef={(inst) => this.baseForm = inst}/>
+            <BaseForm card={card} appType={appType} unionFields={unionFields} setting={setting} verify={verify} notes={notes} onChange={(verify) => this.setState({verify})} wrappedComponentRef={(inst) => this.baseForm = inst}/>
           </TabPane> : null}
           {verifyInter === 'system' ? <TabPane tab={
             <span>
diff --git a/src/utils/utils-datamanage.js b/src/utils/utils-datamanage.js
index 3a20c12..13412b2 100644
--- a/src/utils/utils-datamanage.js
+++ b/src/utils/utils-datamanage.js
@@ -1,6 +1,5 @@
 import md5 from 'md5'
 import moment from 'moment'
-import options from '@/store/options.js'
 import Utils from './utils.js'
 
 export default class DataUtils {
@@ -58,8 +57,8 @@
       param.func = setting.innerFunc
     } else {
       if (window.GLOB.mkHS) {
-        if (setting.sysInterface === 'true' && options.cloudServiceApi) {
-          param.rduri = options.cloudServiceApi
+        if (setting.sysInterface === 'true' && window.GLOB.cloudServiceApi) {
+          param.rduri = window.GLOB.cloudServiceApi
           param.userid = sessionStorage.getItem('CloudUserID') || ''
           param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
         } else if (setting.sysInterface !== 'true') {
@@ -256,7 +255,7 @@
     }
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
-    if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
+    if (window.GLOB.debugger === true || (window.debugger === true && window.GLOB.sysType !== 'cloud')) {
       _customScript && console.info(`${setting.$name ? `/*${setting.$name} 鑷畾涔夎剼鏈�*/\n` : ''}${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
       LText && console.info(`${setting.$name ? `/*${setting.$name} 鏁版嵁婧�*/\n` : ''}` + LText.replace(/\n\s{8}/ig, '\n'))
     }
@@ -292,8 +291,8 @@
       param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
 
       // special HS鑷畾涔夊嚱鏁版煡璇�
-      if (setting.tableName === 's_custom_script' && options.cloudServiceApi) {
-        param.rduri = options.cloudServiceApi
+      if (setting.tableName === 's_custom_script' && window.GLOB.cloudServiceApi) {
+        param.rduri = window.GLOB.cloudServiceApi
         param.userid = sessionStorage.getItem('CloudUserID') || ''
         param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
       }
@@ -406,7 +405,7 @@
     }
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
-    if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
+    if (window.GLOB.debugger === true || (window.debugger === true && window.GLOB.sysType !== 'cloud')) {
       _customScript &&  console.info(`${setting.$name ? `/*${setting.$name} 鑷畾涔夎剼鏈� 缁熻鏌ヨ*/\n` : ''}${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
       LText &&  console.info(`${setting.$name ? `/*${setting.$name} 鏁版嵁婧� 缁熻鏌ヨ*/\n` : ''}` + LText.replace(/\n\s{8}/ig, '\n'))
     }
@@ -557,7 +556,7 @@
     _script = _script.replace(/@typename@/ig, `'admin'`)
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
-    if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
+    if (window.GLOB.debugger === true || (window.debugger === true && window.GLOB.sysType !== 'cloud')) {
       _script && console.info(`${item.$name ? `/*${item.$name} 鑷畾涔夎剼鏈紙鍚屾鏌ヨ锛�*/\n` : ''}${_sql ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_script}`)
       _sql && console.info(`${item.$name ? `/*${item.$name} 鏁版嵁婧愶紙鍚屾鏌ヨ锛�*/\n` : ''}` + _sql)
     }
diff --git a/src/utils/utils.js b/src/utils/utils.js
index 35d083e..369abde 100644
--- a/src/utils/utils.js
+++ b/src/utils/utils.js
@@ -1,6 +1,5 @@
 import moment from 'moment'
 import md5 from 'md5'
-import options from '@/store/options.js'
 
 const formatKeys = [
   { key: 'select', value: ' msltk ' },
@@ -798,8 +797,8 @@
     
     let baseurl = ''
     
-    if (options.cloudServiceApi) {
-      baseurl = options.cloudServiceApi.replace(/webapi(.*)$/, '')
+    if (window.GLOB.cloudServiceApi) {
+      baseurl = window.GLOB.cloudServiceApi.replace(/webapi(.*)$/, '')
     } else {
       baseurl = window.GLOB.baseurl
     }
@@ -1161,7 +1160,7 @@
       _sqlBottom = _sqlBottom.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
     }
 
-    if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
+    if (window.GLOB.debugger === true || (window.debugger === true && window.GLOB.sysType !== 'cloud')) {
       let fsql = `
       ${_sql}
       ${_sqlInsert}
@@ -1396,7 +1395,7 @@
       _sqlBottom = _sqlBottom.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
     }
 
-    if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
+    if (window.GLOB.debugger === true || (window.debugger === true && window.GLOB.sysType !== 'cloud')) {
       let fsql = `
       ${_sql}
       ${_sqlInsert}
@@ -2187,7 +2186,7 @@
     _sql = _sql.replace(/@datam@/ig, '\'\'')
   }
 
-  if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
+  if (window.GLOB.debugger === true || (window.debugger === true && window.GLOB.sysType !== 'cloud')) {
     // _sql = _sql.replace(/\n\s{8}/ig, '\n')
     console.info(_sql)
   }
diff --git a/src/views/billprint/index.jsx b/src/views/billprint/index.jsx
index 7d9d55d..b260195 100644
--- a/src/views/billprint/index.jsx
+++ b/src/views/billprint/index.jsx
@@ -5,7 +5,7 @@
 
 import Api from '@/api'
 import Utils from '@/utils/utils.js'
-import options, { styles } from '@/store/options.js'
+import { styles } from '@/store/options.js'
 import UtilsDM from '@/utils/utils-datamanage.js'
 import NotFount from '@/components/404'
 import asyncComponent from '@/utils/asyncComponent'
@@ -593,7 +593,7 @@
     }
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
-    if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
+    if (window.GLOB.debugger === true || (window.debugger === true && window.GLOB.sysType !== 'cloud')) {
       _customScript &&  console.info(`${_dataresource ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
       _dataresource &&  console.info(_dataresource)
     }
diff --git a/src/views/design/header/index.jsx b/src/views/design/header/index.jsx
index 5a87005..500dcba 100644
--- a/src/views/design/header/index.jsx
+++ b/src/views/design/header/index.jsx
@@ -13,7 +13,6 @@
   logout
 } from '@/store/action'
 import Api from '@/api'
-import options from '@/store/options.js'
 import Utils from '@/utils/utils.js'
 import avatar from '@/assets/img/avatar.jpg'
 import MainLogo from '@/assets/img/main-logo.png'
@@ -64,7 +63,7 @@
     // 鑾峰彇涓昏彍鍗�
     let _param = {
       func: 's_get_pc_menus',
-      systemType: options.sysType,
+      systemType: window.GLOB.sysType,
       pro_sys: window.GLOB.systemType === 'production' ? 'Y' : '',
       debug: 'Y'
     }
@@ -406,11 +405,11 @@
   }
 
   gotoDoc = () => {
-    if (options.sysType === 'local' && window.GLOB.mainSystemApi) {
+    if (window.GLOB.sysType === 'local' && window.GLOB.mainSystemApi) {
       let ssodomain = window.GLOB.mainSystemApi.replace('/webapi/dostars', '')
       let url = `${ssodomain}/doc/index.html#?appkey=${window.GLOB.appkey}&LoginUID=${sessionStorage.getItem('LoginUID')}`
       window.open(url)
-    } else if (options.sysType === 'SSO' || options.sysType === 'cloud') {
+    } else if (window.GLOB.sysType === 'SSO' || window.GLOB.sysType === 'cloud') {
       window.open(`${window.location.href.replace(/\/index.html(.*)|\/#(.*)/ig, '')}/doc/index.html#?appkey=${window.GLOB.appkey}&LoginUID=${sessionStorage.getItem('LoginUID')}`)
     }
   }
@@ -512,7 +511,7 @@
               <Switch size="small" style={{marginLeft: '7px'}} disabled={!!editLevel} checked={true} onChange={this.changeEditState} />
             </Menu.Item>
             <Menu.Item key="doc" onClick={this.gotoDoc}>鏂囨。涓績</Menu.Item>
-            {options.sysType !== 'cloud' ? <Menu.Item style={{padding: 0}} key="verup">
+            {window.GLOB.sysType !== 'cloud' ? <Menu.Item style={{padding: 0}} key="verup">
               <VersionsUp />
             </Menu.Item> : null}
             <Menu.Item key="logout" onClick={this.logout}>閫�鍑�</Menu.Item>
diff --git a/src/views/design/header/versions/index.jsx b/src/views/design/header/versions/index.jsx
index 5d36f6e..100b669 100644
--- a/src/views/design/header/versions/index.jsx
+++ b/src/views/design/header/versions/index.jsx
@@ -5,7 +5,6 @@
 import moment from 'moment'
 
 import Api from '@/api'
-import options from '@/store/options.js'
 import Utils from '@/utils/utils.js'
 import './index.scss'
 
@@ -39,9 +38,9 @@
       }
 
       let edition_int = ''
-      if (options.sysType === 'SSO') {
+      if (window.GLOB.sysType === 'SSO') {
         edition_int = result.edition_int_sso
-      } else if (options.sysType === 'local' && window.GLOB.systemType !== 'production') {
+      } else if (window.GLOB.sysType === 'local' && window.GLOB.systemType !== 'production') {
         edition_int = result.edition_int_local
       } else {
         if (result.edition_int_sso < result.edition_int_local) {
@@ -59,7 +58,7 @@
         return
       }
 
-      let sysType = options.sysType.toLowerCase()
+      let sysType = window.GLOB.sysType.toLowerCase()
 
       if (window.GLOB.systemType === 'production' || sysType !== 'local') {
         sysType = ''
diff --git a/src/views/login/index.jsx b/src/views/login/index.jsx
index 40903fc..335bac1 100644
--- a/src/views/login/index.jsx
+++ b/src/views/login/index.jsx
@@ -6,7 +6,7 @@
 import Api from '@/api'
 import Utils from '@/utils/utils.js' 
 import MKEmitter from '@/utils/events.js'
-import options, { styles } from '@/store/options.js'
+import { styles } from '@/store/options.js'
 import zhCN from '@/locales/zh-CN/login.js'
 import enUS from '@/locales/en-US/login.js'
 import asyncComponent from '@/utils/asyncComponent'
@@ -184,7 +184,7 @@
       } else {
         this.props.history.replace('/main')
       }
-    } else if (res.ErrCode === 'Need_Get_Appkey' && options.sysType === 'SSO') {
+    } else if (res.ErrCode === 'Need_Get_Appkey' && window.GLOB.sysType === 'SSO') {
       message.warning('搴旂敤灏氭湭鍒涘缓锛岃鍚戜簯绔悓姝ュ簲鐢紒')
 
       this.setState({
@@ -245,7 +245,7 @@
       } else {
         this.props.history.replace('/main')
       }
-    } else if (res.ErrCode === 'Need_Get_Appkey' && options.sysType === 'SSO') {
+    } else if (res.ErrCode === 'Need_Get_Appkey' && window.GLOB.sysType === 'SSO') {
       message.warning('搴旂敤灏氭湭鍒涘缓锛岃鍚戜簯绔悓姝ュ簲鐢紒')
 
       this.setState({
@@ -290,7 +290,7 @@
         } else {
           this.props.history.replace('/main')
         }
-      } else if (res.ErrCode === 'Need_Get_Appkey' && options.sysType === 'SSO') {
+      } else if (res.ErrCode === 'Need_Get_Appkey' && window.GLOB.sysType === 'SSO') {
         message.warning('搴旂敤灏氭湭鍒涘缓锛岃鍚戜簯绔悓姝ュ簲鐢紒')
   
         this.setState({
@@ -434,20 +434,14 @@
     }
 
     if (!window.GLOB.licenseKey && (index === -1 || index > 5)) {
-      let _appId = window.GLOB.appId
-  
-      if (options.sysType === 'cloud') { // 浜戠浣跨敤绯荤粺閰嶇疆appid
-        _appId = options.caId
-      }
-  
-      let str = md5('MK19' + _appId + timeStamp)
+      let str = md5('MK19' + window.GLOB.appId + timeStamp)
       let _rduri = window.atob('aHR0cHM6Ly9lcGMubWs5aC5$mkjbi93ZWJhcGkvZG9zdGFycw=='.replace(/\$mk/ig, ''))
       let _func = window.atob('c0VtcG93ZXJDbG91$mkZF9HZXRfTGlua1VybA=='.replace(/\$mk/ig, ''))
       let _id = window.atob('YmgwYmFwYWJ0ZDQ1ZXBz$mkZ3JhNzlzZWdiY2g2YzFpYms='.replace(/\$mk/ig, ''))
   
       let param = {
         func: _func,
-        AppID: _appId,
+        AppID: window.GLOB.appId,
         TimeStamp: timeStamp,
         appkey: window.GLOB.appkey,
         userid: _id,
@@ -591,7 +585,7 @@
           
           if (res.status) {
             // positecgroup
-            // if (options.sysType === 'local' && window.GLOB.systemType !== 'production') {
+            // if (window.GLOB.sysType === 'local' && window.GLOB.systemType !== 'production') {
             //   if (md5(('mk' + window.GLOB.appkey + res.sys_datetime + res.member_type + res.registry_date).toLowerCase()) !== res.secret_key) {
             //     Modal.warning({
             //       title: '瀵嗛挜閿欒锛岃鑱旂郴绠$悊鍛橈紒',
@@ -808,15 +802,15 @@
       func: 's_get_app_from_cloud',
       UserName: '',
       Password: '',
-      systemType: options.sysType,
+      systemType: window.GLOB.sysType,
       Type: 'X',
       debug: 'Y'
     }
 
     param.appkey = window.GLOB.appkey || ''
 
-    if (options.cloudServiceApi) {
-      param.rduri = options.cloudServiceApi.replace('dostars', 'dostar')
+    if (window.GLOB.cloudServiceApi) {
+      param.rduri = window.GLOB.cloudServiceApi.replace('dostars', 'dostar')
     }
 
     this.logincloudRef.handleConfirm().then(result => {
diff --git a/src/views/login/loginform.jsx b/src/views/login/loginform.jsx
index a9b5143..3f5ea61 100644
--- a/src/views/login/loginform.jsx
+++ b/src/views/login/loginform.jsx
@@ -424,6 +424,7 @@
   }
 
   render() {
+    const { langList } = this.props
     const { getFieldDecorator } = this.props.form
     const { activeKey, verdisabled, delay, loginWays, remember, scanId, timeout, hasScan, users } = this.state
     const wayLabels = {app_scan: '鎵爜鐧诲綍', uname_pwd: '璐﹀彿鐧诲綍', sms_vcode: '鐭俊鐧诲綍'}
@@ -475,7 +476,7 @@
               initialValue: remember,
             })(<Checkbox onChange={this.rememberChange}>{this.props.dict['login.remember']}</Checkbox>)}
           </Form.Item> : <div style={{height: '30px', float: 'left'}}></div>}
-          {this.props.langList && this.props.langList.length > 0 ? <Form.Item className="minline right">
+          {langList && langList.length > 0 ? <Form.Item className="minline right">
             {getFieldDecorator('lang', {
               initialValue: this.props.lang,
             })(
@@ -483,7 +484,7 @@
                 onChange={(value) => {this.changelang(value)}}
                 getPopupContainer={() => document.getElementById('login-form')}
               >
-                {this.props.langList.map((item, index) => {
+                {langList.map((item, index) => {
                   return <Select.Option key={index} value={item.Lang}>{item.LangName}</Select.Option>
                 })}
               </Select>
@@ -494,7 +495,7 @@
               {this.props.dict['login.submit']}
             </Button>
           </Form.Item>
-          {options.sysType === 'cloud' && options.cdomain.indexOf('mk9h') > -1 ? <Form.Item className="register-line">
+          {window.GLOB.sysType === 'cloud' && options.cdomain.indexOf('mk9h') > -1 ? <Form.Item className="register-line">
             <a href="http://www.minkesoft.com/signup" target="_blank" rel="noopener noreferrer" className="register">娉ㄥ唽</a>
             <a href="http://www.minkesoft.com/forgotPwd" target="_blank" rel="noopener noreferrer" className="forgot">蹇樿瀵嗙爜锛�</a>
           </Form.Item> : null}
@@ -532,7 +533,7 @@
               />
             )}
           </Form.Item>
-          {this.props.langList && this.props.langList.length > 0 ? <Form.Item className="minline right">
+          {langList && langList.length > 0 ? <Form.Item className="minline right">
             {getFieldDecorator('lang', {
               initialValue: this.props.lang,
             })(
@@ -540,7 +541,7 @@
                 onChange={(value) => {this.changelang(value)}}
                 getPopupContainer={() => document.getElementById('login-form')}
               >
-                {this.props.langList.map((item, index) => {
+                {langList.map((item, index) => {
                   return <Select.Option key={index} value={item.Lang}>{item.LangName}</Select.Option>
                 })}
               </Select>
@@ -551,7 +552,7 @@
               {this.props.dict['login.submit']}
             </Button>
           </Form.Item>
-          {options.sysType === 'cloud' && options.cdomain.indexOf('mk9h') > -1 ? <Form.Item className="register-line">
+          {window.GLOB.sysType === 'cloud' && options.cdomain.indexOf('mk9h') > -1 ? <Form.Item className="register-line">
             <a href="http://www.minkesoft.com/signup" target="_blank" rel="noopener noreferrer" className="register">娉ㄥ唽</a>
             <a href="http://www.minkesoft.com/forgotPwd" target="_blank" rel="noopener noreferrer" className="forgot">蹇樿瀵嗙爜锛�</a>
           </Form.Item> : null}
diff --git a/src/views/menudesign/homeform/index.jsx b/src/views/menudesign/homeform/index.jsx
index 434b693..427ff91 100644
--- a/src/views/menudesign/homeform/index.jsx
+++ b/src/views/menudesign/homeform/index.jsx
@@ -4,7 +4,6 @@
 import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import Api from '@/api'
-import options from '@/store/options.js'
 // import './index.scss'
 
 class CustomMenuForm extends Component {
@@ -24,7 +23,7 @@
   }
 
   getMenus = () => {
-    Api.getCloudConfig({func: 's_get_pc_menus', systemType: options.sysType, debug: 'Y'}).then(result => {
+    Api.getCloudConfig({func: 's_get_pc_menus', systemType: window.GLOB.sysType, debug: 'Y'}).then(result => {
       if (result.status) {
         let thdMenuList = []
         let menulist = result.fst_menu.map(fst => {
diff --git a/src/views/menudesign/index.jsx b/src/views/menudesign/index.jsx
index 5976772..060153f 100644
--- a/src/views/menudesign/index.jsx
+++ b/src/views/menudesign/index.jsx
@@ -10,7 +10,6 @@
 import md5 from 'md5'
 
 import Api from '@/api'
-import options from '@/store/options.js'
 import Utils, { setGLOBFuncs } from '@/utils/utils.js'
 import antdZhCN from 'antd/es/locale/zh_CN'
 import MKEmitter from '@/utils/events.js'
@@ -965,8 +964,8 @@
               Base64Img: canvas.toDataURL('image/png') // 鑾峰彇鐢熸垚鐨勫浘鐗�
             }
   
-            if (options.cloudServiceApi) {
-              param.rduri = options.cloudServiceApi
+            if (window.GLOB.cloudServiceApi) {
+              param.rduri = window.GLOB.cloudServiceApi
               param.userid = sessionStorage.getItem('CloudUserID') || ''
               param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
             }
diff --git a/src/views/menudesign/menuform/index.jsx b/src/views/menudesign/menuform/index.jsx
index e6fa3c9..bb9801c 100644
--- a/src/views/menudesign/menuform/index.jsx
+++ b/src/views/menudesign/menuform/index.jsx
@@ -4,7 +4,6 @@
 import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import Api from '@/api'
-import options from '@/store/options.js'
 import './index.scss'
 
 const { TextArea } = Input
@@ -77,7 +76,7 @@
   getMenus = () => {
     const { MenuId, config } = this.props
 
-    Api.getCloudConfig({func: 's_get_pc_menus', systemType: options.sysType, debug: 'Y'}).then(result => {
+    Api.getCloudConfig({func: 's_get_pc_menus', systemType: window.GLOB.sysType, debug: 'Y'}).then(result => {
       if (result.status) {
         let thdMenu = null
         let thdMenuList = []
diff --git a/src/views/printTemplate/index.jsx b/src/views/printTemplate/index.jsx
index 1a5a5f9..3375efd 100644
--- a/src/views/printTemplate/index.jsx
+++ b/src/views/printTemplate/index.jsx
@@ -20,7 +20,6 @@
   qrurl,
   imgurl
 } from './option.js'
-import options from '@/store/options.js'
 import Utils from '@/utils/utils.js'
 import printCtrl from './print.js'
 import Api from '@/api'
@@ -776,8 +775,8 @@
           Base64Img: res
         }
 
-        if (options.cloudServiceApi) {
-          param.rduri = options.cloudServiceApi
+        if (window.GLOB.cloudServiceApi) {
+          param.rduri = window.GLOB.cloudServiceApi
           param.userid = sessionStorage.getItem('CloudUserID') || ''
           param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
         }
diff --git a/src/views/systemfunc/sidemenu/index.jsx b/src/views/systemfunc/sidemenu/index.jsx
index 21bd103..b6c4b15 100644
--- a/src/views/systemfunc/sidemenu/index.jsx
+++ b/src/views/systemfunc/sidemenu/index.jsx
@@ -4,7 +4,6 @@
 import { FolderOutlined } from '@ant-design/icons'
 
 import { SySMenuList } from './config'
-import options from '@/store/options.js'
 import MKEmitter from '@/utils/events.js'
 import './index.scss'
 
@@ -34,7 +33,7 @@
       menulist = menulist.filter(menu => menu.children.length > 0)
     } else {
       menulist.forEach(menu => {
-        menu.children = menu.children.filter(item => !item.systems || item.systems.includes(options.sysType))
+        menu.children = menu.children.filter(item => !item.systems || item.systems.includes(window.GLOB.sysType))
       })
 
       menulist = menulist.filter(menu => menu.children.length > 0)
diff --git a/src/views/tabledesign/menuform/index.jsx b/src/views/tabledesign/menuform/index.jsx
index beeda49..9c128c1 100644
--- a/src/views/tabledesign/menuform/index.jsx
+++ b/src/views/tabledesign/menuform/index.jsx
@@ -3,7 +3,6 @@
 import { Form, Row, Col, Input, Select, notification, Switch } from 'antd'
 
 import Api from '@/api'
-import options from '@/store/options.js'
 import './index.scss'
 
 const { TextArea } = Input
@@ -76,7 +75,7 @@
   getMenus = () => {
     const { MenuId, config } = this.props
 
-    Api.getCloudConfig({func: 's_get_pc_menus', systemType: options.sysType, debug: 'Y'}).then(result => {
+    Api.getCloudConfig({func: 's_get_pc_menus', systemType: window.GLOB.sysType, debug: 'Y'}).then(result => {
       if (result.status) {
         let thdMenu = null
         let thdMenuList = []

--
Gitblit v1.8.0