From 0245e64a9dff794903e546c3bdf9fef7efeefdf1 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 06 十二月 2022 16:09:04 +0800
Subject: [PATCH] Merge branch 'master' into positec

---
 src/components/keyInterface/index.jsx                                 |   58 ++++++-
 src/templates/sharecomponent/settingcomponent/index.jsx               |    2 
 src/menu/components/share/markcomponent/index.jsx                     |   10 -
 src/templates/formtabconfig/index.jsx                                 |    2 
 src/menu/components/card/prop-card/index.scss                         |    5 
 src/menu/components/card/cardcellcomponent/elementform/index.jsx      |   10 -
 src/menu/components/form/simple-form/index.jsx                        |    5 
 src/views/billprint/index.scss                                        |   12 +
 src/menu/components/table/base-table/index.scss                       |    2 
 src/menu/components/table/normal-table/columns/editColumn/index.jsx   |    4 
 src/templates/modalconfig/index.jsx                                   |    5 
 src/api/direct.js                                                     |   10 
 src/api/index.js                                                      |   10 +
 src/mob/modalconfig/index.jsx                                         |    5 
 src/menu/components/table/edit-table/columns/editColumn/index.jsx     |    4 
 src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx  |   16 --
 src/menu/datasource/verifycard/index.jsx                              |    9 
 src/utils/utils.js                                                    |    5 
 src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx |    4 
 src/index.js                                                          |    6 
 src/tabviews/custom/components/card/prop-card/index.jsx               |   19 ++
 src/templates/sharecomponent/actioncomponent/verifyprint/index.jsx    |    4 
 src/menu/components/table/base-table/columns/editColumn/index.jsx     |    4 
 src/menu/components/form/step-form/index.jsx                          |    5 
 src/menu/components/card/cardcellcomponent/index.jsx                  |   55 ++++++
 src/menu/components/card/data-card/options.jsx                        |   28 +++
 src/menu/stylecontroller/index.jsx                                    |   14 +
 src/menu/components/form/tab-form/index.jsx                           |    5 
 src/menu/components/share/actioncomponent/formconfig.jsx              |   10 +
 src/menu/datasource/verifycard/settingform/index.jsx                  |    2 
 src/tabviews/zshare/actionList/funcMegvii/index.jsx                   |    8 
 src/menu/components/share/actioncomponent/index.jsx                   |    6 
 src/tabviews/zshare/actionList/printbutton/index.jsx                  |   39 ++++
 src/templates/sharecomponent/actioncomponent/index.jsx                |    6 
 src/components/keyInterface/index.scss                                |    4 
 src/menu/modalconfig/index.jsx                                        |    5 
 src/menu/components/card/prop-card/index.jsx                          |   18 ++
 src/views/systemfunc/sidemenu/config.jsx                              |    8 +
 src/views/login/index.jsx                                             |   25 +++
 39 files changed, 329 insertions(+), 120 deletions(-)

diff --git a/src/api/w4k.js b/src/api/direct.js
similarity index 94%
rename from src/api/w4k.js
rename to src/api/direct.js
index 5c47975..e800992 100644
--- a/src/api/w4k.js
+++ b/src/api/direct.js
@@ -1,12 +1,12 @@
 import axios from 'axios'
 import jsSHA from 'jssha'
 
-class W4kApi {
+class DirectApi {
   /**
    * @description 閴存潈鎸戞垬
    * @param {Object} param 鏌ヨ鍙婃彁浜ゅ弬鏁�
    */
-  login (ip, username = 'admin', password) {
+  w4kLogin (ip, username = 'admin', password) {
     return new Promise((resolve, reject) => {
       let challurl = ip + '/api/auth/login/challenge?username=' + username
       challurl = '/trans/redirect?rd=' + challurl + '&method=get'
@@ -45,7 +45,7 @@
     })
   }
 
-  queryUsers (ip) {
+  w4kQueryUsers (ip) {
     let url = ip + '/api/persons/query'
     url = '/trans/redirect?rd=' + url + '&method=post'
 
@@ -64,7 +64,7 @@
     })
   }
 
-  addUsers (ip, data) {
+  w4kAddUsers (ip, data) {
     return new Promise((resolve, reject) => {
       let delurl = ip + '/api/persons/item/' + data.id
       delurl = '/trans/redirect?rd=' + delurl + '&method=DELETE'
@@ -110,4 +110,4 @@
   }
 }
 
-export default new W4kApi()
\ No newline at end of file
+export default new DirectApi()
\ No newline at end of file
diff --git a/src/api/index.js b/src/api/index.js
index 23bdeca..12f10a6 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -32,7 +32,7 @@
 axios.defaults.withCredentials = false
 
 axios.interceptors.request.use((config) => {
-  if (config.url.includes('LoginAndRedirect') || config.url.includes('getjsonresult') || config.url.includes('wxNativePay')) {
+  if (/LoginAndRedirect|getjsonresult|wxNativePay|postek/ig.test(config.url)) {
     config.data = qs.stringify(config.data)
   } else if (/\/doupload|\/dopreload|\/upload/.test(config.url)) {
     config.headers = { 'Content-Type': 'multipart/form-data' }
@@ -1219,6 +1219,14 @@
     })
   }
 
+  postekPrint (data) {
+    return axios({
+      url: 'http://127.0.0.1:888/postek/print',
+      method: 'post',
+      data: data
+    })
+  }
+
   // /**
   //  * @description 鏂囦欢涓婁紶
   //  */
diff --git a/src/components/keyInterface/index.jsx b/src/components/keyInterface/index.jsx
index 80074b2..517b091 100644
--- a/src/components/keyInterface/index.jsx
+++ b/src/components/keyInterface/index.jsx
@@ -7,6 +7,7 @@
 import './index.scss'
 
 const { TextArea } = Input
+const { confirm } = Modal
 
 class KeyInterface extends Component {
   static propTpyes = {
@@ -45,6 +46,15 @@
 
     if (this.state.key && _setting && typeof(_setting) === 'string') {
       _setting = this.decrypt(this.state.key, _setting)
+
+      if (!_setting) {
+        notification.warning({
+          top: 92,
+          message: '淇℃伅瑙f瀽澶辫触!',
+          duration: 5
+        })
+        this.props.onChange('')
+      }
     }
 
     this.setState({visible: true, setting: _setting || {}})
@@ -64,12 +74,7 @@
   
       setting = JSON.parse(window.decodeURIComponent(window.atob(setting)))
     } catch (e) {
-      notification.warning({
-        top: 92,
-        message: '淇℃伅瑙f瀽澶辫触!',
-        duration: 5
-      })
-      setting = {}
+      setting = null
     }
 
     return setting
@@ -84,6 +89,20 @@
         let _setting = this.state.setting
         if (_setting && typeof(_setting) === 'string') {
           _setting = this.decrypt(key, _setting)
+
+          if (!_setting) {
+            const that = this
+            confirm({
+              title: '淇℃伅瑙f瀽澶辫触!',
+              content: '鐐瑰嚮纭畾浼氭竻闄ら厤缃俊鎭紝鐐瑰嚮鍙栨秷鍙噸鏂拌緭鍏ppkey銆�',
+              onOk() {
+                that.setState({key: key, setting: {}, url: ''})
+                that.props.onChange('')
+              },
+              onCancel() {}
+            })
+            return
+          }
         }
         this.setState({key: key, setting: _setting})
         return
@@ -118,11 +137,18 @@
       this.props.onChange(content)
 
       this.setState({setting: message, url: values.interface, visible: false})
+
+      if (this.props.type !== 'develop') {
+        this.setState({key: ''})
+      }
     })
   }
 
   delKey = () => {
+    const { url } = this.state
     const { type } = this.props
+
+    if (!url) return
 
     if (type === 'develop') {
       this.setState({setting: null, url: ''})
@@ -133,6 +159,15 @@
     this.props.onChange('')
   }
 
+  cancel = () => {
+    const { type } = this.props
+
+    if (type !== 'develop') {
+      this.setState({key: ''})
+    }
+    this.setState({visible: false})
+  }
+
   render() {
     const { getFieldDecorator } = this.props.form
     const { url, visible, setting, key } = this.state
@@ -140,7 +175,10 @@
     return (
       <div className="mk-key-wrap">
         <TextArea value={url} rows={2} readOnly={true}/>
-        <div className="mk-key-edit"><EditOutlined onClick={this.editKey}/><DeleteOutlined onClick={this.delKey}/></div>
+        <div className="mk-key-edit">
+          <EditOutlined onClick={this.editKey}/>
+          <DeleteOutlined className={!url ? 'disable' : ''} onClick={this.delKey}/>
+        </div>
         <Modal
           wrapClassName='mk-key-modal'
           visible={visible}
@@ -148,7 +186,7 @@
           maskClosable={false}
           width={650}
           onOk={this.handleConfirm}
-          onCancel={() => this.setState({visible: false})}
+          onCancel={this.cancel}
           destroyOnClose
         >
           {key && setting ?
@@ -196,7 +234,7 @@
                       message: '涓嶅彲灏忎簬16浣嶏紒'
                     }
                   ]
-                })(<Input placeholder="璇疯緭鍏ppkey" autoComplete="off" />)}
+                })(<Input placeholder="璇疯緭鍏ョ洰鏍囩郴缁焌ppkey" autoComplete="off" />)}
               </Form.Item>
               <Form.Item label="鐢ㄦ埛鍚�">
                 {getFieldDecorator('username', {
@@ -244,7 +282,7 @@
               </Form.Item>
             </Form> : null}
           {!key ? <Form style={{marginTop: '20px', marginBottom: '50px'}}>
-            <Form.Item label="apptoken">
+            <Form.Item label="appkey">
               {getFieldDecorator('apptoken', {
                 initialValue: '',
                 rules: [
diff --git a/src/components/keyInterface/index.scss b/src/components/keyInterface/index.scss
index 7753a5e..baf39c1 100644
--- a/src/components/keyInterface/index.scss
+++ b/src/components/keyInterface/index.scss
@@ -18,6 +18,10 @@
     .anticon-delete {
       color: #f5222d;
     }
+    .anticon-delete.disable {
+      opacity: 0.5;
+      cursor: not-allowed;
+    }
   }
 }
 .mk-key-modal {
diff --git a/src/index.js b/src/index.js
index 1e070e6..97fbbe4 100644
--- a/src/index.js
+++ b/src/index.js
@@ -201,11 +201,7 @@
     document.title = GLOB.platTitle || ''
 
     if (config.filter === 'true' || (/^20\d{2}-\d{2}-\d{2}$/.test(config.filter) && new Date(config.filter).getTime() + 86400000 >= new Date().getTime())) {
-      let html = document.getElementsByTagName('html')[0]
-      
-      if (html) {
-        html.style.filter = 'grayscale(100%)'
-      }
+      GLOB.filter = true
     }
 
     if (process.env.NODE_ENV === 'production') { // 鐢ㄤ簬鏍¢獙鏄惁瀛樺湪寮�鍙戞潈闄�
diff --git a/src/menu/components/card/cardcellcomponent/elementform/index.jsx b/src/menu/components/card/cardcellcomponent/elementform/index.jsx
index b720973..93e0b43 100644
--- a/src/menu/components/card/cardcellcomponent/elementform/index.jsx
+++ b/src/menu/components/card/cardcellcomponent/elementform/index.jsx
@@ -64,10 +64,7 @@
         if (item.key === 'field' || item.key === 'linkurl' || item.key === 'bgImage' || item.key === 'posterField') {
           item.options = []
           config.columns.forEach(col => {
-            let label = col.label
-            if (label.toLowerCase() !== col.field.toLowerCase()) {
-              label = col.field + ' ' + col.label
-            }
+            let label = `${col.field}锛�${col.label}锛塦
             if (/^(Int|Decimal)/ig.test(col.datatype) && (card.eleType === 'number' || card.eleType === 'slider')) {
               item.options.push({
                 value: col.field,
@@ -173,10 +170,7 @@
         if (item.key === 'field') {
           item.options = []
           config.columns.forEach(col => {
-            let label = col.label
-            if (label.toLowerCase() !== col.field.toLowerCase()) {
-              label = col.field + ' ' + col.label
-            }
+            let label = `${col.field}锛�${col.label}锛塦
 
             if (/^(Int|Decimal)/ig.test(col.datatype) && (value === 'number' || value === 'slider')) {
               item.options.push({
diff --git a/src/menu/components/card/cardcellcomponent/index.jsx b/src/menu/components/card/cardcellcomponent/index.jsx
index d2529af..96f02a0 100644
--- a/src/menu/components/card/cardcellcomponent/index.jsx
+++ b/src/menu/components/card/cardcellcomponent/index.jsx
@@ -7,6 +7,7 @@
 import { getCardCellForm } from './formconfig'
 import { getActionForm, getBaseTableActionForm } from '@/menu/components/share/actioncomponent/formconfig'
 
+import Utils, { FuncUtils } from '@/utils/utils.js'
 import MKEmitter from '@/utils/events.js'
 import MenuUtils from '@/utils/utils-custom.js'
 import ElementForm from './elementform'
@@ -156,6 +157,7 @@
       options = ['border', 'margin']
     } else if (element.eleType === 'text') {
       options[0] = 'font2'
+      options.push('display')
     } else if (element.eleType === 'slider') {
       options = ['padding', 'margin']
     } else if (element.eleType === 'splitline') {
@@ -355,6 +357,11 @@
       let _elements = elements.map(cell => {
         if (cell.uuid === res.uuid) {
           res.style = cell.style || {}
+
+          if (res.eleType !== 'text') {
+            delete res.style.display
+          }
+          
           if (res.eleType === 'splitline' && (cell.eleType !== 'splitline' || cell.focus)) {
             res.style.paddingTop = '5px'
             res.style.paddingBottom = '5px'
@@ -629,6 +636,54 @@
     })
   }
 
+  /**
+   * @description 鍒涘缓鎸夐挳瀛樺偍杩囩▼
+   */
+  creatFunc = () => {
+    const menu = window.GLOB.customMenu
+    let _config = fromJS(this.props.cards).toJS()
+
+    this.actionFormRef.handleConfirm().then(res => {
+      let btn = res         // 鎸夐挳淇℃伅
+      let newLText = ''     // 鍒涘缓瀛樺偍杩囩▼sql
+      let DelText = ''      // 鍒犻櫎瀛樺偍杩囩▼sql
+
+      if (btn.intertype !== 'inner') return
+
+      if (btn.OpenType === 'pop') {
+        let _param = {
+          funcName: btn.innerFunc,
+          name: _config.setting.tableName || '',
+          fields: btn.modal ? btn.modal.fields : [],
+          menuNo: menu.MenuNo
+        }
+        newLText = Utils.formatOptions(FuncUtils.getfunc(_param, btn, menu, _config))
+        DelText = Utils.formatOptions(FuncUtils.dropfunc(btn.innerFunc))
+      } else if (btn.OpenType === 'excelIn') {
+        let _param = {
+          funcName: btn.innerFunc,
+          menuNo: menu.MenuNo
+        }
+        newLText = Utils.formatOptions(FuncUtils.getexcelInfunc(_param, btn, menu))
+        DelText = Utils.formatOptions(FuncUtils.dropfunc(btn.innerFunc))
+      } else if (btn.OpenType === 'excelOut') {
+        newLText = Utils.formatOptions(FuncUtils.getTableFunc(btn.innerFunc, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql
+        DelText = Utils.formatOptions(FuncUtils.dropfunc(btn.innerFunc))
+      } else {
+        let _param = {
+          funcName: btn.innerFunc,
+          name: _config.setting.tableName || '',
+          fields: '',
+          menuNo: menu.MenuNo
+        }
+        newLText = Utils.formatOptions(FuncUtils.getfunc(_param, btn, menu, _config))
+        DelText = Utils.formatOptions(FuncUtils.dropfunc(btn.innerFunc))
+      }
+
+      this.refs.btnCreatFunc.exec(btn.innerFunc, newLText, DelText)
+    })
+  }
+
   getVerify = (card) => {
     const { cards } = this.props
 
diff --git a/src/menu/components/card/data-card/options.jsx b/src/menu/components/card/data-card/options.jsx
index c750cfc..8026bd2 100644
--- a/src/menu/components/card/data-card/options.jsx
+++ b/src/menu/components/card/data-card/options.jsx
@@ -3,7 +3,7 @@
 /**
  * @description Wrap琛ㄥ崟閰嶇疆淇℃伅
  */
-export default function (wrap, subtype, columns = [], id = '', supNodes = [], setting) {
+export default function (wrap, subtype, columns = [], id = '', supNodes = [], setting, buttons = []) {
   let appType = sessionStorage.getItem('appType')
   let MenuType = ''
   let menu = window.GLOB.customMenu
@@ -106,6 +106,7 @@
         {field: 'goback', values: ['dynamic']},
         {field: 'empty', values: ['dynamic', 'public']},
         {field: 'jump', values: ['dynamic']},
+        {field: 'autoExec', values: ['dynamic']},
         {field: 'supModule', values: ['static']},
         {field: 'publicId', values: ['public']},
       ],
@@ -314,6 +315,21 @@
     },
     {
       type: 'radio',
+      field: 'display',
+      label: '鏄剧ず鎺у埗',
+      initval: wrap.display || 'normal',
+      required: false,
+      options: [
+        {value: 'normal', label: '姝e父鏄剧ず'},
+        {value: 'hidden', label: '涓嶅彲瑙�'},
+      ],
+      controlFields: [
+        {field: 'empty', values: ['normal']},
+      ],
+      forbid: subtype !== 'propcard'
+    },
+    {
+      type: 'radio',
       field: 'empty',
       label: '绌哄�奸殣钘�',
       initval: wrap.empty || 'show',
@@ -326,6 +342,16 @@
       ],
     },
     {
+      type: 'select',
+      field: 'autoExec',
+      label: '鑷姩鎵ц',
+      initval: wrap.autoExec || '',
+      tooltip: '鏁版嵁鏇存柊鏃惰嚜鍔ㄦ墽琛屾寜閽�傛敞锛氭鎸夐挳鎵ц鎴愬姛鍚庤皑鎱庨�夋嫨鍒锋柊椤癸紝閬垮厤閫犳垚寰幆鎵ц銆�',
+      required: false,
+      options: buttons,
+      forbid: subtype !== 'propcard'
+    },
+    {
       type: 'radio',
       field: 'jump',
       label: '椤甸潰璺宠浆',
diff --git a/src/menu/components/card/prop-card/index.jsx b/src/menu/components/card/prop-card/index.jsx
index 5e91a50..909dfa3 100644
--- a/src/menu/components/card/prop-card/index.jsx
+++ b/src/menu/components/card/prop-card/index.jsx
@@ -2,7 +2,7 @@
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
 import { Popover, Modal } from 'antd'
-import { PlusOutlined, SettingOutlined, EditOutlined, ToolOutlined, DeleteOutlined, FontColorsOutlined, ClockCircleOutlined } from '@ant-design/icons'
+import { PlusOutlined, SettingOutlined, EditOutlined, ToolOutlined, DeleteOutlined, FontColorsOutlined, ClockCircleOutlined, HeatMapOutlined } from '@ant-design/icons'
 
 import asyncComponent from '@/utils/asyncComponent'
 import asyncIconComponent from '@/utils/asyncIconComponent'
@@ -423,7 +423,20 @@
 
   getWrapForms = () => {
     const { card } = this.state
-    return getWrapForm(card.wrap, card.subtype, card.columns, card.uuid)
+    let buttons = []
+
+    card.subcards.forEach(m => {
+      m.elements.forEach(n => {
+        if (n.eleType === 'button') {
+          buttons.push({
+            value: n.uuid,
+            label: n.label
+          })
+        }
+      })
+    })
+
+    return getWrapForm(card.wrap, card.subtype, card.columns, card.uuid, null, null, buttons)
   }
 
   updateWrap = (res) => {
@@ -514,6 +527,7 @@
         <div className={(card.wrap.layout || 'grid') + '-layout float-' + (card.wrap.cardFloat || 'left') + ' select-' + card.wrap.selStyle}>
           {card.subcards.map(subcard => (<CardComponent key={subcard.uuid} cards={card} card={subcard} move={this.move} updateElement={this.updateCard} deleteElement={this.deleteCard}/>))}
         </div>
+        {card.wrap.display === 'hidden' ? <HeatMapOutlined className="prop-hidden"/> : null}
         <div className="component-name">
           <div className="center">
             <div className="title">{card.name}</div>
diff --git a/src/menu/components/card/prop-card/index.scss b/src/menu/components/card/prop-card/index.scss
index b87a34f..b3fd307 100644
--- a/src/menu/components/card/prop-card/index.scss
+++ b/src/menu/components/card/prop-card/index.scss
@@ -88,6 +88,11 @@
       border-bottom: 2px solid #1890ff!important;
     }
   }
+  .prop-hidden {
+    color: orange;
+    float: right;
+    margin: 5px;
+  }
 }
 .menu-prop-card-edit-box::after {
   display: block;
diff --git a/src/menu/components/form/simple-form/index.jsx b/src/menu/components/form/simple-form/index.jsx
index beaab97..a6de6f5 100644
--- a/src/menu/components/form/simple-form/index.jsx
+++ b/src/menu/components/form/simple-form/index.jsx
@@ -348,10 +348,7 @@
         index = i
       }
 
-      let label = item.label || ''
-      if (item.field && item.field.toLowerCase() !== label.toLowerCase()) {
-        label = label + ' (' + item.field + ')'
-      }
+      let label = `${item.field || ''}锛�${item.label}锛塦
 
       if (['text', 'number', 'textarea', 'color'].includes(item.type) && _item.field !== item.field) {
         _inputfields.push({
diff --git a/src/menu/components/form/step-form/index.jsx b/src/menu/components/form/step-form/index.jsx
index 73888c0..55dd906 100644
--- a/src/menu/components/form/step-form/index.jsx
+++ b/src/menu/components/form/step-form/index.jsx
@@ -449,10 +449,7 @@
         index = i
       }
 
-      let label = item.label || ''
-      if (item.field && item.field.toLowerCase() !== label.toLowerCase()) {
-        label = label + ' (' + item.field + ')'
-      }
+      let label = `${item.field || ''}锛�${item.label}锛塦
 
       if (['text', 'number', 'textarea', 'color'].includes(item.type) && _item.field !== item.field) {
         _inputfields.push({
diff --git a/src/menu/components/form/tab-form/index.jsx b/src/menu/components/form/tab-form/index.jsx
index c6eb98b..a354870 100644
--- a/src/menu/components/form/tab-form/index.jsx
+++ b/src/menu/components/form/tab-form/index.jsx
@@ -455,10 +455,7 @@
         index = i
       }
 
-      let label = item.label || ''
-      if (item.field && item.field.toLowerCase() !== label.toLowerCase()) {
-        label = label + ' (' + item.field + ')'
-      }
+      let label = `${item.field || ''}锛�${item.label}锛塦
 
       if (['text', 'number', 'textarea', 'color'].includes(item.type) && _item.field !== item.field) {
         _inputfields.push({
diff --git a/src/menu/components/share/actioncomponent/formconfig.jsx b/src/menu/components/share/actioncomponent/formconfig.jsx
index 196f05c..ae79d94 100644
--- a/src/menu/components/share/actioncomponent/formconfig.jsx
+++ b/src/menu/components/share/actioncomponent/formconfig.jsx
@@ -933,7 +933,10 @@
       initVal: card.controlField || '',
       required: true,
       allowClear: true,
-      options: columns
+      options: columns.map(item => ({
+        value: item.field,
+        text: `${item.label}锛�${item.field}锛塦
+      }))
     },
     {
       type: 'text',
@@ -1718,7 +1721,10 @@
       initVal: card.controlField || '',
       required: true,
       allowClear: true,
-      options: columns
+      options: columns.map(item => ({
+        value: item.field,
+        text: `${item.label}锛�${item.field}锛塦
+      }))
     },
     {
       type: 'text',
diff --git a/src/menu/components/share/actioncomponent/index.jsx b/src/menu/components/share/actioncomponent/index.jsx
index 1234964..82fe3f2 100644
--- a/src/menu/components/share/actioncomponent/index.jsx
+++ b/src/menu/components/share/actioncomponent/index.jsx
@@ -416,11 +416,7 @@
         newLText = Utils.formatOptions(FuncUtils.getexcelInfunc(_param, btn, menu))
         DelText = Utils.formatOptions(FuncUtils.dropfunc(btn.innerFunc))
       } else if (btn.OpenType === 'excelOut') {
-        let _param = {
-          innerFunc: btn.innerFunc
-        }
-
-        newLText = Utils.formatOptions(FuncUtils.getTableFunc(_param, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql
+        newLText = Utils.formatOptions(FuncUtils.getTableFunc(btn.innerFunc, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql
         DelText = Utils.formatOptions(FuncUtils.dropfunc(btn.innerFunc))
       } else {
         let _param = {
diff --git a/src/menu/components/share/markcomponent/index.jsx b/src/menu/components/share/markcomponent/index.jsx
index 50c608f..a17b5dd 100644
--- a/src/menu/components/share/markcomponent/index.jsx
+++ b/src/menu/components/share/markcomponent/index.jsx
@@ -144,10 +144,7 @@
     _columns.unshift({field: '$Index', label: '搴忓彿'})
 
     let options = _columns.map(col => {
-      let label = col.label
-      if (col.label.toLowerCase() !== col.field.toLowerCase()) {
-        label += `锛�${col.field}锛塦
-      }
+      let label = `${col.field}锛�${col.label}锛塦
       return {
         value: col.field,
         label: label,
@@ -161,10 +158,7 @@
             value: 'dynamic',
             label: '鍔ㄦ�佸��',
             children: _columns.map(cell => {
-              let _label = cell.label
-              if (cell.label.toLowerCase() !== cell.field.toLowerCase()) {
-                _label += `锛�${cell.field}锛塦
-              }
+              let _label = `${cell.field}锛�${cell.label}锛塦
               return {
                 value: cell.field,
                 label: _label
diff --git a/src/menu/components/table/base-table/columns/editColumn/index.jsx b/src/menu/components/table/base-table/columns/editColumn/index.jsx
index aa252c7..044e8ad 100644
--- a/src/menu/components/table/base-table/columns/editColumn/index.jsx
+++ b/src/menu/components/table/base-table/columns/editColumn/index.jsx
@@ -45,9 +45,7 @@
 
   editColumn = (column) => {
     let fields = fromJS(this.props.fields).toJS().map(item => {
-      if (item.label.toLowerCase() !== item.field.toLowerCase()) {
-        item.text = item.label + '锛�' + item.field + '锛�'
-      }
+      item.text = `${item.field}锛�${item.label}锛塦
       return item
     })
     
diff --git a/src/menu/components/table/base-table/index.scss b/src/menu/components/table/base-table/index.scss
index 017fbe0..36252f5 100644
--- a/src/menu/components/table/base-table/index.scss
+++ b/src/menu/components/table/base-table/index.scss
@@ -32,7 +32,7 @@
   }
   .anticon-tool {
     position: absolute;
-    z-index: 2;
+    z-index: 5;
     font-size: 16px;
     right: 1px;
     top: 1px;
diff --git a/src/menu/components/table/edit-table/columns/editColumn/index.jsx b/src/menu/components/table/edit-table/columns/editColumn/index.jsx
index 102006c..1fac697 100644
--- a/src/menu/components/table/edit-table/columns/editColumn/index.jsx
+++ b/src/menu/components/table/edit-table/columns/editColumn/index.jsx
@@ -85,9 +85,7 @@
 
   editColumn = (column) => {
     let fields = fromJS(this.props.fields).toJS().map(item => {
-      if (item.label.toLowerCase() !== item.field.toLowerCase()) {
-        item.text = item.label + '锛�' + item.field + '锛�'
-      }
+      item.text = `${item.field}锛�${item.label}锛塦
       return item
     })
 
diff --git a/src/menu/components/table/normal-table/columns/editColumn/index.jsx b/src/menu/components/table/normal-table/columns/editColumn/index.jsx
index 0639e7d..19aa359 100644
--- a/src/menu/components/table/normal-table/columns/editColumn/index.jsx
+++ b/src/menu/components/table/normal-table/columns/editColumn/index.jsx
@@ -45,9 +45,7 @@
 
   editColumn = (column) => {
     let fields = fromJS(this.props.fields).toJS().map(item => {
-      if (item.label.toLowerCase() !== item.field.toLowerCase()) {
-        item.text = item.label + '锛�' + item.field + '锛�'
-      }
+      item.text = `${item.field}锛�${item.label}锛塦
       return item
     })
     
diff --git a/src/menu/datasource/verifycard/index.jsx b/src/menu/datasource/verifycard/index.jsx
index 507b1ed..23ae166 100644
--- a/src/menu/datasource/verifycard/index.jsx
+++ b/src/menu/datasource/verifycard/index.jsx
@@ -39,6 +39,7 @@
     defaultsql: '',       // 榛樿Sql
     defaultSearch: '',
     systemScripts: [],
+    median: {},
     visible: false,
     pvisible: false,
     reload: false,
@@ -197,6 +198,7 @@
       scripts,
       columns: config.columns ? fromJS(config.columns).toJS() : [],
       setting: _setting,
+      median: _setting,
       searches: search,
       defaultSearch: _search
     })
@@ -781,6 +783,7 @@
             return col
           }),
           setting: res.data.setting,
+          median: res.data.setting,
           reload: true,
           pvisible: false
         }, () => {
@@ -793,6 +796,7 @@
             return col
           }),
           setting: res.data.setting,
+          median: res.data.setting,
           reload: true,
           pvisible: false
         }, () => {
@@ -834,7 +838,7 @@
 
   render() {
     const { config } = this.props
-    const { columns, setting, scripts, colColumns, scriptsColumns, activeKey, loading, searches, defaultsql, visible, pvisible, reload, script, scriptValue } = this.state
+    const { columns, median, setting, scripts, colColumns, scriptsColumns, activeKey, loading, searches, defaultsql, visible, pvisible, reload, script, scriptValue } = this.state
 
     return (
       <div className="model-data-source-wrap">
@@ -853,6 +857,7 @@
               columns={columns}
               setting={setting}
               scripts={scripts}
+              updateStatus={(res) => this.setState({median: {...res}})}
               wrappedComponentRef={(inst) => this.settingForm = inst}
             /> : null}
           </TabPane>
@@ -876,7 +881,7 @@
               鑷畾涔夎剼鏈�
               {scripts.length ? <span className="count-tip">{scripts.length}</span> : null}
             </span>
-          } key="scripts" id="mk-scripts-tabpane">
+          } key="scripts" disabled={median.interType !== 'system'} id="mk-scripts-tabpane">
             {scripts.length ? <BorderOutlined className="full-scripts" onClick={() => {
               if (this.scriptsForm && (this.scriptsForm.state.editItem || (this.scriptsForm.props.form.getFieldValue('sql') && !/^\s+$/.test(this.scriptsForm.props.form.getFieldValue('sql'))))) {
                 notification.warning({
diff --git a/src/menu/datasource/verifycard/settingform/index.jsx b/src/menu/datasource/verifycard/settingform/index.jsx
index cdee544..419b015 100644
--- a/src/menu/datasource/verifycard/settingform/index.jsx
+++ b/src/menu/datasource/verifycard/settingform/index.jsx
@@ -15,6 +15,7 @@
 
 class SettingForm extends Component {
   static propTpyes = {
+    updateStatus: PropTypes.func,
     config: PropTypes.object,     // 缁勪欢閰嶇疆
     setting: PropTypes.object,    // 鏁版嵁婧愰厤缃�
     columns: PropTypes.array,     // 鍒楄缃�
@@ -157,6 +158,7 @@
     if (key === 'sysInterface' && value === 'true') {
       this.props.form.setFieldsValue({interface: window.GLOB.mainSystemApi})
     }
+    this.props.updateStatus(setting)
   }
 
   render() {
diff --git a/src/menu/modalconfig/index.jsx b/src/menu/modalconfig/index.jsx
index eda92fa..8f2e1b0 100644
--- a/src/menu/modalconfig/index.jsx
+++ b/src/menu/modalconfig/index.jsx
@@ -127,10 +127,7 @@
         index = i
       }
 
-      let label = item.label || ''
-      if (item.field && item.field.toLowerCase() !== label.toLowerCase()) {
-        label = label + ' (' + item.field + ')'
-      }
+      let label = `${item.field || ''}锛�${item.label}锛塦
 
       if (['text', 'number', 'textarea', 'color'].includes(item.type) && card.field !== item.field) {
         _inputfields.push({
diff --git a/src/menu/stylecontroller/index.jsx b/src/menu/stylecontroller/index.jsx
index 736abb5..80cde31 100644
--- a/src/menu/stylecontroller/index.jsx
+++ b/src/menu/stylecontroller/index.jsx
@@ -911,6 +911,20 @@
                   </Form.Item>
                 </Col>
               </Panel> : null}
+              {options.includes('display') ? <Panel header="鏄剧ず" key="display">
+                <Col span={24}>
+                  <Form.Item
+                    colon={false}
+                    label={<SwapOutlined title="娴姩"/>}
+                    labelCol={{xs: { span: 24 }, sm: { span: 4 }}} wrapperCol={ {xs: { span: 24 }, sm: { span: 20 }} }
+                  >
+                    <Radio.Group style={{whiteSpace: 'nowrap'}} defaultValue={card.display || 'block'} onChange={(e) => this.changeNormalStyle(e.target.value, 'display')}>
+                      <Radio value="block">鍧楃骇鍏冪礌</Radio>
+                      <Radio value="inline-block">琛屽唴鍧楀厓绱�</Radio>
+                    </Radio.Group>
+                  </Form.Item>
+                </Col>
+              </Panel> : null}
             </Collapse> : null}
           </Form>
           <div style={{textAlign: 'right'}}>
diff --git a/src/mob/modalconfig/index.jsx b/src/mob/modalconfig/index.jsx
index 21f6370..97d305d 100644
--- a/src/mob/modalconfig/index.jsx
+++ b/src/mob/modalconfig/index.jsx
@@ -148,10 +148,7 @@
         index = i
       }
 
-      let label = item.label || ''
-      if (item.field && item.field.toLowerCase() !== label.toLowerCase()) {
-        label = label + ' (' + item.field + ')'
-      }
+      let label = `${item.field || ''}锛�${item.label}锛塦
 
       if (['text', 'number', 'textarea', 'color'].includes(item.type) && card.field !== item.field) {
         _inputfields.push({
diff --git a/src/tabviews/custom/components/card/prop-card/index.jsx b/src/tabviews/custom/components/card/prop-card/index.jsx
index 7bce4be..14185b5 100644
--- a/src/tabviews/custom/components/card/prop-card/index.jsx
+++ b/src/tabviews/custom/components/card/prop-card/index.jsx
@@ -116,6 +116,10 @@
 
     _config.wrap.wrapClass =  `${_config.wrap.selStyle} ${_config.wrap.cardType || ''} ${_config.wrap.scale || ''} ${_config.wrap.layout || 'grid'}-layout float-${_config.wrap.cardFloat || 'left'}`
 
+    if (_config.wrap.display === 'hidden') {
+      _config.style.display = 'none'
+    }
+
     this.setState({
       selected,
       sync: _sync,
@@ -141,6 +145,9 @@
         }, 200)
       }
 
+      if (_config.wrap.datatype === 'dynamic') {
+        this.autoExec()
+      }
       if (!_config.wrap.cardType && _data.$$uuid) {
         setTimeout(() => {
           this.transferLine()
@@ -209,6 +216,7 @@
         } else if (!config.wrap.cardType && _data.$$uuid) {
           this.transferLine()
         }
+        this.autoExec()
       })
     } else if (config.setting.useMSearch && nextProps.mainSearch && !is(fromJS(this.props.mainSearch), fromJS(nextProps.mainSearch))) {
       this.setState({}, () => {
@@ -235,6 +243,16 @@
         }
       })
     }
+  }
+
+  autoExec = () => {
+    const { config, data } = this.state
+
+    if (!config.wrap.autoExec || data.$$empty) return
+
+    setTimeout(() => {
+      MKEmitter.emit('triggerBtnId', config.wrap.autoExec, [data])
+    }, 200)
   }
 
   checkTopLine = () => {
@@ -384,6 +402,7 @@
         } else {
           this.transferLine()
         }
+        this.autoExec()
       })
 
       if (config.timer && config.clearField) {
diff --git a/src/tabviews/zshare/actionList/funcMegvii/index.jsx b/src/tabviews/zshare/actionList/funcMegvii/index.jsx
index 7ff8bf6..2f8cdd5 100644
--- a/src/tabviews/zshare/actionList/funcMegvii/index.jsx
+++ b/src/tabviews/zshare/actionList/funcMegvii/index.jsx
@@ -7,7 +7,7 @@
 
 import NApi from '@/api'
 import Utils from '@/utils/utils.js'
-import Api from '@/api/w4k.js'
+import Api from '@/api/direct.js'
 import MKEmitter from '@/utils/events.js'
 import MkIcon from '@/components/mk-icon'
 
@@ -194,7 +194,7 @@
     // let ip = 'http://localhost:3001'
     let ip = selectIp.face_ip
 
-    Api.login(ip, selectIp.face_uname, selectIp.face_pwd).then(result => {
+    Api.w4kLogin(ip, selectIp.face_uname, selectIp.face_pwd).then(result => {
       if (result.errors) {
         this.execPreError(result)
         return
@@ -202,7 +202,7 @@
 
       document.cookie = 'sessionID=' + result.session_id
 
-      Api.queryUsers(ip).then(res => {
+      Api.w4kQueryUsers(ip).then(res => {
         if (res.errors) {
           this.execPreError(res)
           return
@@ -289,7 +289,7 @@
       data.id_number = CryptoJS.enc.Base64.stringify(encrypted.ciphertext)
     }
 
-    Api.addUsers(ip, data).then(res => {
+    Api.w4kAddUsers(ip, data).then(res => {
       if (res.errors) {
         this.execPreError(res, data)
         return
diff --git a/src/tabviews/zshare/actionList/printbutton/index.jsx b/src/tabviews/zshare/actionList/printbutton/index.jsx
index 99b5db8..0e665c5 100644
--- a/src/tabviews/zshare/actionList/printbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/printbutton/index.jsx
@@ -1087,10 +1087,49 @@
     }
   }
 
+  // execRfidPrint = () => {
+  //   let type = 'HF'
+  //   let printparamsJsonArray = []
+
+  //   let mm = 12
+  //   if (type === 'HF') {
+  //     printparamsJsonArray.push({PTK_OpenUSBPort: 255}); // 鎵撳紑鎵撳嵃鏈篣SB绔彛
+  //     printparamsJsonArray.push({PTK_ClearBuffer: ''}); // 娓呯┖缂撳瓨
+  //     printparamsJsonArray.push({PTK_SetDarkness: 10}); // 璁剧疆鎵撳嵃榛戝害 鍙栧�艰寖鍥� 0-20
+  //     printparamsJsonArray.push({PTK_SetPrintSpeed: 4}); // 璁剧疆鎵撳嵃閫熷害
+  //     printparamsJsonArray.push({PTK_SetDirection: 'B'}); // 璁剧疆鎵撳嵃鏂瑰悜
+  //     printparamsJsonArray.push({PTK_SetLabelHeight: 25*mm + ","+ 10*mm +","+ 0 +","+ false}); // 璁剧疆鏍囩楂樺害銆侀棿闅欏強鍋忕Щ
+  //     printparamsJsonArray.push({PTK_SetLabelWidth: 60*mm}); // 璁剧疆鏍囩瀹藉害
+  //     printparamsJsonArray.push({PTK_SetRFID: 0+","+0+","+0+","+0+","+0}); // UHF RFID鎵撳嵃璁剧疆
+  //     printparamsJsonArray.push({PTK_RWRFIDLabel: 1+","+0+","+0+","+4+","+1+',EEBA99192945C746'});
+  //     printparamsJsonArray.push({PTK_DrawText_TrueType: "50,10,36,0,寰蒋闆呴粦,1,700,0,0,0,鍖椾含鏄庣鏈夐檺鍏徃"});
+  //     // printparamsJsonArray.push({PTK_DrawText_TrueType: x+","+y+","+FHeight+","+FWidth+","+FType+","+Fspin+","+FWeight+","+FItalic+","+FUnline+","+FStrikeOut+","+data});
+  //     // printparamsJsonArray.push({PTK_EncodeRFIDPC:'mkA040'});
+  //     printparamsJsonArray.push({PTK_PrintLabel:1+","+1});
+  //     printparamsJsonArray.push({PTK_CloseUSBPort: ""}); // 鍏抽棴USB閫氳绔彛
+  //   }
+
+  //   let data = {
+  //     reqParam: '1',
+  //     printparams: JSON.stringify(printparamsJsonArray)
+  //     // printparams: JSON.stringify([{PTK_OpenUSBPort: 255},{PTK_ErrorReport_USBInterrupt: 'status:'},{PTK_GetPrinterDPI: 'DPI:'},{PTK_CloseUSBPort: ''}])
+  //     // printparams: JSON.stringify([{PTK_OpenUSBPort: 255},{PTK_RFIDCalibrate: ''},{PTK_CloseUSBPort: ''}])
+  //   }
+
+  //   Api.postekPrint(data).then(result => {
+
+  //   })
+  // }
+
   execPrint = (list, template, formdata) => {
     const { btn } = this.props
     let _errors = []
     
+    // if (btn) {
+    //   this.execRfidPrint()
+    //   return
+    // }
+
     let defaultPrinter = btn.verify.defaultPrinter || 'lackprinter'
     let printers = {}
     if (btn.verify.printerTypeList && btn.verify.printerTypeList.length > 0) {
diff --git a/src/templates/formtabconfig/index.jsx b/src/templates/formtabconfig/index.jsx
index 038e1a2..028b214 100644
--- a/src/templates/formtabconfig/index.jsx
+++ b/src/templates/formtabconfig/index.jsx
@@ -679,7 +679,7 @@
       }
 
       let _config = {...config, setting: setting}
-      let newLText = Utils.formatOptions(FuncUtils.getTableFunc(setting, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql
+      let newLText = Utils.formatOptions(FuncUtils.getTableFunc(setting.innerFunc, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql
       let DelText = Utils.formatOptions(FuncUtils.dropfunc(setting.innerFunc))          // 鍒犻櫎瀛樺偍杩囩▼sql
 
       this.refs.tableCreatFunc.exec(setting.innerFunc, newLText, DelText)
diff --git a/src/templates/modalconfig/index.jsx b/src/templates/modalconfig/index.jsx
index f44811b..3adf6d8 100644
--- a/src/templates/modalconfig/index.jsx
+++ b/src/templates/modalconfig/index.jsx
@@ -257,10 +257,7 @@
         index = i
       }
 
-      let label = item.label || ''
-      if (item.field && item.field.toLowerCase() !== label.toLowerCase()) {
-        label = label + ' (' + item.field + ')'
-      }
+      let label = `${item.field || ''}锛�${item.label}锛塦
 
       if (['text', 'number', 'textarea', 'color'].includes(item.type) && card.field !== item.field) {
         _inputfields.push({
diff --git a/src/templates/sharecomponent/actioncomponent/index.jsx b/src/templates/sharecomponent/actioncomponent/index.jsx
index 976dd12..024cfc7 100644
--- a/src/templates/sharecomponent/actioncomponent/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/index.jsx
@@ -783,11 +783,7 @@
             resolve(false)
           }
         } else if (btn.OpenType === 'excelOut') {
-          let _param = {
-            innerFunc: btn.innerFunc
-          }
-
-          newLText = Utils.formatOptions(FuncUtils.getTableFunc(_param, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql
+          newLText = Utils.formatOptions(FuncUtils.getTableFunc(btn.innerFunc, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql
           DelText = Utils.formatOptions(FuncUtils.dropfunc(btn.innerFunc))
 
           resolve(true)
diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx
index bf2bcc7..555ed77 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx
@@ -442,22 +442,6 @@
   changeColumns = (columns) => {
     const { verify } = this.state
 
-    if (columns[0] && (columns[0].type === 'image' || columns[0].type === 'text')) {
-      columns = columns.map(col => {
-        let _cell = {
-          uuid: Utils.getuuid(),
-          Column: col.Column,
-          Text: col.Text,
-          type: 'Nvarchar(50)',
-          limit: '50',
-          import: 'true',
-          required: 'true'
-        }
-
-        return _cell
-      })
-    }
-
     columns = columns.map(col => {
       if (/^Nvarchar/ig.test(col.type)) {
         col.limit = col.type.match(/\d+/) ? col.type.match(/\d+/)[0] : '20000'
diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
index 798b5b2..eb8ffeb 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
@@ -841,7 +841,7 @@
   changeColumns = (columns) => {
     const { verify } = this.state
 
-    if (columns[0] && (columns[0].type !== 'image' && columns[0].type !== 'text' && columns[0].type !== 'number')) {
+    if (columns[0] && !['image', 'text', 'number'].includes(columns[0].type)) {
       columns = columns.map(col => {
         let _cell = {
           uuid: Utils.getuuid(),
@@ -849,7 +849,7 @@
           Text: col.Text,
           Width: 20,
           abs: 'false',
-          output: 'true',
+          output: col.output || 'true',
           type: 'text',
         }
 
diff --git a/src/templates/sharecomponent/actioncomponent/verifyprint/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyprint/index.jsx
index 591bbc8..1c8b257 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyprint/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyprint/index.jsx
@@ -255,7 +255,7 @@
             <Form {...formItemLayout}>
               <Row gutter={24}>
                 <Col span={8}>
-                  <Form.Item label={'鎵撳嵃妯″紡'}>
+                  <Form.Item label="鎵撳嵃妯″紡">
                     {getFieldDecorator('printMode', {
                       initialValue: printMode || 'normal'
                     })(
@@ -267,7 +267,7 @@
                   </Form.Item>
                 </Col>
                 <Col span={8}>
-                  <Form.Item label={'閾炬帴绫诲瀷'}>
+                  <Form.Item label="閾炬帴绫诲瀷">
                     {getFieldDecorator('linkType', {
                       initialValue: linkType || 'system'
                     })(
diff --git a/src/templates/sharecomponent/settingcomponent/index.jsx b/src/templates/sharecomponent/settingcomponent/index.jsx
index 7f47893..4886a07 100644
--- a/src/templates/sharecomponent/settingcomponent/index.jsx
+++ b/src/templates/sharecomponent/settingcomponent/index.jsx
@@ -84,7 +84,7 @@
     this.settingRef.handleConfirm('loading').then(setting => {
       let res = this.resetSetting(setting, config.setting)
       let _config = {...config, setting: res}
-      let newLText = Utils.formatOptions(FuncUtils.getTableFunc(setting, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql
+      let newLText = Utils.formatOptions(FuncUtils.getTableFunc(setting.innerFunc, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql
       let DelText = Utils.formatOptions(FuncUtils.dropfunc(setting.innerFunc))          // 鍒犻櫎瀛樺偍杩囩▼sql
 
       this.refs.funcCreatComponent.exec(setting.innerFunc, newLText, DelText)
diff --git a/src/utils/utils.js b/src/utils/utils.js
index af68c88..434200c 100644
--- a/src/utils/utils.js
+++ b/src/utils/utils.js
@@ -2274,7 +2274,7 @@
    * @description 鍒涘缓椤甸潰瀛樺偍杩囩▼
    * @return {String}
    */
-  static getTableFunc (param, menu, config) {
+  static getTableFunc (func = 'func', menu, config) {
     let form = ''
     let formParam = ''
     let _vars = ['bid', 'pageindex', 'pagesize', 'ordercol', 'ordertype', 'exceltype', 'septmenuno', 'lang', 'debug', 'loginuid', 'sessionuid', 'userid', 'errorcode', 'retmsg']
@@ -2329,7 +2329,7 @@
       `
     }
 
-    let Ltext = `create proc ${param.innerFunc}
+    let Ltext = `create proc ${func}
     ( /*${menu.MenuName}*/
     @appkey nvarchar(50)='',
     @BID nvarchar(50)='',${formParam}
@@ -2344,6 +2344,7 @@
     @LoginUID nvarchar(50)='',
     @SessionUid nvarchar(50)='',
     @UserID nvarchar(50),
+    @dataM nvarchar(50),
     @ErrorCode nvarchar(50) out,
     @retmsg nvarchar(4000) out
     )
diff --git a/src/views/billprint/index.scss b/src/views/billprint/index.scss
index 0903dc2..fa8b84a 100644
--- a/src/views/billprint/index.scss
+++ b/src/views/billprint/index.scss
@@ -46,9 +46,6 @@
   .g2-tooltip {
     display: none;
   }
-  .mk-action-space {
-    display: none;
-  }
 }
 
 .print-page {
@@ -72,6 +69,15 @@
     padding: 2px 8px!important;
     line-height: 1.5;
   }
+  .ant-table-placeholder {
+    display: none;
+  }
+  .ant-empty {
+    display: none;
+  }
+  .mk-action-space {
+    display: none;
+  }
 }
 .print-page.auto:last-child {
   height: auto!important;
diff --git a/src/views/login/index.jsx b/src/views/login/index.jsx
index a9bf8d0..45f558f 100644
--- a/src/views/login/index.jsx
+++ b/src/views/login/index.jsx
@@ -311,6 +311,14 @@
     //   if (!res || !res.ip) return
     //   sessionStorage.setItem('ipAddress', res.ip)
     // })
+    if (window.GLOB.filter) {
+      let view = document.getElementById('mk-login-view')
+      
+      if (view) {
+        view.style.filter = 'grayscale(100%)'
+      }
+    }
+
     if (sessionStorage.getItem('loginError')) {
       try {
         let res = JSON.parse(sessionStorage.getItem('loginError'))
@@ -510,6 +518,21 @@
 
     Api.getTouristMsg().then(result => {
       if (result.status) {
+        if (result.website && process.env.NODE_ENV === 'production') {
+          let website = result.website.replace(/http(s)?:\/\/|\/$/ig, '').toLowerCase()
+          let current = window.GLOB.baseurl.replace(/http(s)?:\/\/|\/$/ig, '').toLowerCase()
+
+          if (website !== current) {
+            try {
+              window.history.replaceState(null, null, result.website.replace(/\/$/ig, '') + '/admin/index.html#/login')
+              window.location.reload()
+            } catch(e) {
+              window.location.href = result.website.replace(/\/$/ig, '') + '/admin/index.html#/login'
+            }
+            return
+          }
+        }
+        
         sessionStorage.setItem('visitorUserID', result.UserID || '')
         sessionStorage.setItem('visitorLoginUID', result.LoginUID || '')
 
@@ -918,7 +941,7 @@
     const { lineColor, bgImage, loginlogo, copyRight, webSite, ICP, loginWays, touristLogin } = this.state
 
     return (
-      <div className="login-container" style={bgImage ? {backgroundImage: 'url(' + bgImage + ')'} : {}}>
+      <div className="login-container" id="mk-login-view" style={bgImage ? {backgroundImage: 'url(' + bgImage + ')'} : {}}>
         <div className="logo" style={lineColor ? {borderColor: lineColor} : {}}>
           {loginlogo ? <img src={loginlogo} alt=""/> : null}
           {this.state.platName ? <p className="plat-name">{this.state.platName}</p> : null}
diff --git a/src/views/systemfunc/sidemenu/config.jsx b/src/views/systemfunc/sidemenu/config.jsx
index f98e20f..6726114 100644
--- a/src/views/systemfunc/sidemenu/config.jsx
+++ b/src/views/systemfunc/sidemenu/config.jsx
@@ -248,5 +248,13 @@
     MenuID: '1588493493409k9guqp067d31lu7blsv',
     MenuNo: 's_job_stepM',
     MenuName: '璁″垝浠诲姟',
+  }, {
+    src: '',
+    systems: ['production', 'local', 'SSO', 'cloud'],
+    PageParam: {OpenType: 'newtab', Template: 'BaseTable'},
+    type: 'BaseTable',
+    MenuID: '1670296054432ab9d5c0pf76o93315ag',
+    MenuNo: 's_sys_job_history_M',
+    MenuName: '浠g悊浣滀笟璁板綍',
   }]
 }]

--
Gitblit v1.8.0