From a9b02f6862522b54d0824152017bf2acfec2af7b Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 21 三月 2024 10:29:50 +0800
Subject: [PATCH] 2024-03-21

---
 src/tabviews/custom/components/card/double-data-card/index.scss                    |    6 
 src/templates/sharecomponent/actioncomponent/verifyexcelout/customscript/index.jsx |    6 
 src/menu/components/table/normal-table/options.jsx                                 |   57 +++--
 src/menu/components/card/table-card/index.jsx                                      |    9 
 src/tabviews/zshare/actionList/popupbutton/index.jsx                               |    2 
 src/menu/components/card/cardcellcomponent/index.scss                              |    3 
 src/menu/components/card/cardcellcomponent/dragaction/action.jsx                   |   14 
 src/menu/components/card/cardcellcomponent/elementform/index.jsx                   |   93 ++++----
 src/tabviews/custom/components/share/normalTable/index.scss                        |    5 
 src/menu/components/table/edit-table/options.jsx                                   |   11 +
 src/tabviews/custom/components/share/normalheader/index.scss                       |    3 
 src/tabviews/custom/components/share/normalTable/index.jsx                         |    2 
 src/tabviews/zshare/actionList/newpagebutton/index.jsx                             |    8 
 src/templates/sharecomponent/actioncomponent/verifyprint/utils.jsx                 |   17 +
 src/views/billprint/index.jsx                                                      |    7 
 src/tabviews/zshare/actionList/normalbutton/index.jsx                              |   35 +++
 src/tabviews/custom/components/card/data-card/index.scss                           |   10 
 src/tabviews/custom/components/card/data-card/index.jsx                            |    4 
 src/tabviews/custom/components/card/table-card/index.scss                          |   10 
 src/tabviews/custom/components/card/table-card/index.jsx                           |    4 
 src/tabviews/custom/components/card/cardcellList/index.jsx                         |   10 
 src/menu/components/card/double-data-card/options.jsx                              |   12 
 src/menu/components/card/data-card/options.jsx                                     |  110 ++++++++--
 src/menu/stylecontroller/index.jsx                                                 |    2 
 src/menu/components/share/actioncomponent/formconfig.jsx                           |    4 
 src/menu/components/table/base-table/options.jsx                                   |   61 +++--
 src/views/systemfunc/sidemenu/index.jsx                                            |    4 
 src/menu/components/card/data-card/index.jsx                                       |   15 +
 src/tabviews/custom/components/table/edit-table/normalTable/index.jsx              |    2 
 src/tabviews/zshare/actionList/printbutton/index.jsx                               |   10 
 src/tabviews/custom/components/table/edit-table/normalTable/index.scss             |    5 
 src/menu/components/card/cardcellcomponent/formconfig.jsx                          |    5 
 src/menu/components/share/actioncomponent/actionform/index.jsx                     |    2 
 src/tabviews/custom/components/card/cardcellList/index.scss                        |    2 
 src/menu/components/card/prop-card/index.jsx                                       |    7 
 src/menu/components/card/cardcellcomponent/elementform/index.scss                  |    5 
 36 files changed, 386 insertions(+), 176 deletions(-)

diff --git a/src/menu/components/card/cardcellcomponent/dragaction/action.jsx b/src/menu/components/card/cardcellcomponent/dragaction/action.jsx
index 47cdb5d..4db573b 100644
--- a/src/menu/components/card/cardcellcomponent/dragaction/action.jsx
+++ b/src/menu/components/card/cardcellcomponent/dragaction/action.jsx
@@ -66,17 +66,17 @@
   } else if (card.show === 'icon') {
     btnElement = (<Button style={_style} type="link"><MkIcon type={card.icon}/>{warning}</Button>)
   } else if (card.show === 'link') {
-    btnElement = (<Button style={_style} type="link">{card.label}{card.icon ? <MkIcon type={card.icon}/> : null}{warning}</Button>)
+    btnElement = (<Button style={_style} type="link">{card.showName || card.label}{card.icon ? <MkIcon type={card.icon}/> : null}{warning}</Button>)
   } else {
-    btnElement = (<Button style={_style}>{card.icon ? <MkIcon type={card.icon}/> : null}{card.label}{warning}</Button>)
+    btnElement = (<Button style={_style}>{card.icon ? <MkIcon type={card.icon}/> : null}{card.showName || card.label}{warning}</Button>)
   }
 
-  let _style_ = null
+  let _style_ = {opacity: isDragging ? 0.3 : 1, ...card.wrapStyle}
 
   if (card.style && card.style.clear === 'left') {
-    _style_ = {clear: 'left'}
+    _style_.clear = 'left'
   } else if (card.style && card.style.clear === 'right') {
-    _style_ = {float: 'right'}
+    _style_.float = 'right'
   }
 
   let className = card.width || 0
@@ -105,9 +105,7 @@
       </div>
     } trigger="hover">
       <div ref={node => drag(drop(node))} style={_style_} className={'ant-col card-button-cell ant-col-' + className} onDoubleClick={(e) => {e.stopPropagation(); doubleClickCard(id)}}>
-        <div style={{opacity: isDragging ? 0.3 : 1, ...card.wrapStyle}}>
-          {btnElement}
-        </div>
+        {btnElement}
       </div>
     </Popover>
   )
diff --git a/src/menu/components/card/cardcellcomponent/elementform/index.jsx b/src/menu/components/card/cardcellcomponent/elementform/index.jsx
index 8488fd1..dee9a31 100644
--- a/src/menu/components/card/cardcellcomponent/elementform/index.jsx
+++ b/src/menu/components/card/cardcellcomponent/elementform/index.jsx
@@ -10,6 +10,7 @@
 
 const { TextArea } = Input
 const ColorSketch = asyncComponent(() => import('@/mob/colorsketch'))
+const CodeMirror = asyncComponent(() => import('@/templates/zshare/codemirror'))
 const SourceComponent = asyncComponent(() => import('@/menu/components/share/sourcecomponent'))
 const MkEditIcon = asyncComponent(() => import('@/components/mkIcon'))
 
@@ -399,52 +400,26 @@
           </Col>
         )
       } else if (item.type === 'textarea') {
-        if (item.key === 'formula') {
-          fields.push(
-            <Col span={24} className="textarea" key={index}>
-              <Form.Item label={item.tooltip ?
-                <Tooltip placement="topLeft" title={item.tooltip}>
-                  <QuestionCircleOutlined className="mk-form-tip" />
-                  {item.label}
-                </Tooltip> : item.label
-              }>
-                {getFieldDecorator(item.key, {
-                  initialValue: item.initVal || '',
-                  rules: [
-                    {
-                      required: item.readonly ? false : !!item.required,
-                      message: '璇疯緭鍏�' + item.label + '!'
-                    }
-                  ]
-                })(<TextArea autoSize={{minRows: 2}} disabled={item.readonly} placeholder={item.placeholder || ''} />)}
-              </Form.Item>
-              <Popover overlayClassName="formula-fields" placement="topLeft" title="" content={<div>{item.fields}</div>} trigger="click">
-                <span className="formula-icon">瀛楁闆�</span>
-              </Popover>
-            </Col>
-          )
-        } else {
-          fields.push(
-            <Col span={24} className="textarea" key={index}>
-              <Form.Item label={item.tooltip ?
-                <Tooltip placement="topLeft" title={item.tooltip}>
-                  <QuestionCircleOutlined className="mk-form-tip" />
-                  {item.label}
-                </Tooltip> : item.label
-              }>
-                {getFieldDecorator(item.key, {
-                  initialValue: item.initVal || '',
-                  rules: [
-                    {
-                      required: item.readonly ? false : !!item.required,
-                      message: '璇疯緭鍏�' + item.label + '!'
-                    }
-                  ]
-                })(<TextArea autoSize={{minRows: 2}} disabled={item.readonly} placeholder={item.placeholder || ''} />)}
-              </Form.Item>
-            </Col>
-          )
-        }
+        fields.push(
+          <Col span={24} className="textarea" key={index}>
+            <Form.Item label={item.tooltip ?
+              <Tooltip placement="topLeft" title={item.tooltip}>
+                <QuestionCircleOutlined className="mk-form-tip" />
+                {item.label}
+              </Tooltip> : item.label
+            }>
+              {getFieldDecorator(item.key, {
+                initialValue: item.initVal || '',
+                rules: [
+                  {
+                    required: item.readonly ? false : !!item.required,
+                    message: '璇疯緭鍏�' + item.label + '!'
+                  }
+                ]
+              })(<TextArea autoSize={{minRows: 2}} disabled={item.readonly} placeholder={item.placeholder || ''} />)}
+            </Form.Item>
+          </Col>
+        )
       } else if (item.type === 'number') {
         fields.push(
           <Col span={12} key={index}>
@@ -614,6 +589,32 @@
             </Form.Item>
           </Col>
         )
+      } else if (item.type === 'codemirror') {
+        fields.push(
+          <Col span={24} key={index} className="textarea">
+            <Form.Item label={
+              <Tooltip placement="topLeft" overlayStyle={{width: 500, maxWidth: 500}} title={item.tooltip}>
+                <QuestionCircleOutlined className="mk-form-tip" />
+                {item.label}
+              </Tooltip>
+            }>
+              {getFieldDecorator(item.key, {
+                initialValue: item.initVal || '',
+                rules: [
+                  {
+                    required: !!item.required,
+                    message: '璇疯緭鍏�' + item.label + '!'
+                  }
+                ]
+              })(
+                <CodeMirror mode="text/javascript"/>
+              )}
+            </Form.Item>
+            <Popover overlayClassName="formula-fields" placement="topLeft" title="" content={<div>{item.fields}</div>} trigger="click">
+              <span className="formula-icon">瀛楁闆�</span>
+            </Popover>
+          </Col>
+        )
       }
     })
     return fields
diff --git a/src/menu/components/card/cardcellcomponent/elementform/index.scss b/src/menu/components/card/cardcellcomponent/elementform/index.scss
index aaa2c39..b6273fd 100644
--- a/src/menu/components/card/cardcellcomponent/elementform/index.scss
+++ b/src/menu/components/card/cardcellcomponent/elementform/index.scss
@@ -14,10 +14,13 @@
       .ant-form-item-control-wrapper {
         width: 85.8%;
       }
+      .CodeMirror {
+        height: 200px;
+      }
 
       .formula-icon {
         position: absolute;
-        bottom: 5px;
+        top: -18px;
         right: 15px;
         cursor: pointer;
         font-size: 12px;
diff --git a/src/menu/components/card/cardcellcomponent/formconfig.jsx b/src/menu/components/card/cardcellcomponent/formconfig.jsx
index 3371a1a..41265db 100644
--- a/src/menu/components/card/cardcellcomponent/formconfig.jsx
+++ b/src/menu/components/card/cardcellcomponent/formconfig.jsx
@@ -314,6 +314,7 @@
         { value: 'YYYY-MM', text: 'YYYY-MM' },
         { value: 'YYYY-MM-DD HH:mm', text: 'YYYY-MM-DD HH:mm' },
         { value: 'YYYY-MM-DD HH:mm:ss', text: 'YYYY-MM-DD HH:mm:ss' },
+        { value: 'YYYY骞碝M鏈圖D鏃�', text: 'YYYY骞碝M鏈圖D鏃�' },
       ]
     },
     {
@@ -675,11 +676,11 @@
       }]
     },
     {
-      type: 'textarea',
+      type: 'codemirror',
       key: 'formula',
       label: '鍏紡',
       initVal: card.formula || '',
-      tooltip: '鎵ц鏃朵細浣跨敤鏌ヨ鍒扮殑鏁版嵁鏇挎崲鐩稿簲鐨勫瓧娈碉紝灞曠ず鑾峰緱鐨勭粨鏋滐紝鍦ㄤ笉浣跨敤瑙f瀽鏃舵崲琛岀鎴栫┖鏍间細鏇挎崲涓洪〉闈㈠厓绱犮�傚彲浣跨敤JS鐨勪竴浜涜娉曪紝濡傦細涓夊厓琛ㄨ揪寮� @field1@ > @field2@ ? 0 : 1锛汳ath瀵硅薄锛屽彇缁濆鍊� Math.abs(@field@)銆佸洓鑸嶄簲鍏� Math.round(@field@)绛�',
+      tooltip: '鎵ц鏃朵細浣跨敤鏌ヨ鍒扮殑鏁版嵁鏇挎崲鐩稿簲鐨勫瓧娈碉紝灞曠ず鑾峰緱鐨勭粨鏋滐紝鍦ㄤ笉浣跨敤瑙f瀽鏃舵崲琛岀鎴栫┖鏍间細鏇挎崲涓洪〉闈㈠厓绱犮�傚彲浣跨敤JS鐨勪竴浜涜娉曪紝濡傦細涓夊厓琛ㄨ揪寮� @field1@ > @field2@ ? 0 : 1锛汳ath瀵硅薄锛屽彇缁濆鍊� Math.abs(@field@)銆佸洓鑸嶄簲鍏� Math.round(@field@)绛夈�傛敞锛氫細鏇挎崲鍏紡涓殑@username@銆丂fullName@銆丂bid@銆�',
       placeholder: '渚嬪锛欯price@ * @number@',
       required: true
     },
diff --git a/src/menu/components/card/cardcellcomponent/index.scss b/src/menu/components/card/cardcellcomponent/index.scss
index c8d9688..f4c9f9e 100644
--- a/src/menu/components/card/cardcellcomponent/index.scss
+++ b/src/menu/components/card/cardcellcomponent/index.scss
@@ -9,6 +9,7 @@
 
   .card-button-cell {
     float: left;
+    text-align: center;
     button {
       box-shadow: none;
     }
@@ -18,7 +19,7 @@
       background-position: center center;
       height: auto;
       min-height: 28px;
-      text-align: center;
+      text-align: inherit;
       border-width: 0;
       padding: 0;
       overflow: hidden;
diff --git a/src/menu/components/card/data-card/index.jsx b/src/menu/components/card/data-card/index.jsx
index b16fec5..7bb0284 100644
--- a/src/menu/components/card/data-card/index.jsx
+++ b/src/menu/components/card/data-card/index.jsx
@@ -370,6 +370,19 @@
   updateWrap = (res) => {
     const { card } = this.state
 
+    if (res.interaction) {
+      if (res.interaction.includes('scale')) {
+        res.scale = 'true'
+      }
+      if (res.interaction.includes('parity')) {
+        res.parity = 'true'
+      }
+      if (res.interaction.includes('hover')) {
+        res.hover = 'true'
+      }
+      delete res.interaction
+    }
+
     let _card = {...card, wrap: res}
 
     if (res.supNodes) {
@@ -538,7 +551,7 @@
             <PlusOutlined className="plus" title="娣诲姞鍗$墖" onClick={() => this.addCard()}/>
             {appType !== 'mob' ? <PlusCircleOutlined className="plus" title="娣诲姞鎼滅储" onClick={() => this.addSearch()}/> : null}
             <PlusSquareOutlined className="plus" title="娣诲姞鎸夐挳" onClick={() => this.addButton()}/>
-            <NormalForm title="鏁版嵁鍗¤缃�" width={800} update={this.updateWrap} getForms={this.getWrapForms}>
+            <NormalForm title="鏁版嵁鍗¤缃�" width={850} update={this.updateWrap} getForms={this.getWrapForms}>
               <EditOutlined style={{color: '#1890ff'}} title="缂栬緫"/>
             </NormalForm>
             <CopyComponent type="datacard" card={card}/>
diff --git a/src/menu/components/card/data-card/options.jsx b/src/menu/components/card/data-card/options.jsx
index b6f7f3c..4ea2fb5 100644
--- a/src/menu/components/card/data-card/options.jsx
+++ b/src/menu/components/card/data-card/options.jsx
@@ -59,6 +59,74 @@
     }
   }
 
+  let interaction = []
+  let interOptions = []
+
+  if (wrap.scale === 'true') {
+    interaction.push('scale')
+  }
+  if (wrap.parity === 'true') {
+    interaction.push('parity')
+  }
+  if (wrap.hover === 'true') {
+    interaction.push('hover')
+  }
+
+  if (subtype === 'datacard') {
+    interOptions = [
+      {value: 'parity', label: '濂囧伓寮傝壊'},
+    ]
+    if (appType !== 'mob') {
+      interOptions.push(
+        {value: 'hover', label: '鎮诞鍙樿壊'},
+        {value: 'scale', label: '鎮诞鏀惧ぇ'}
+      )
+    }
+  } else if (subtype === 'propcard' && appType !== 'mob') {
+    interOptions = [
+      {value: 'scale', label: '鎮诞鏀惧ぇ'}
+    ]
+  } else if (subtype === 'tablecard') {
+    interOptions = [
+      {value: 'parity', label: '濂囧伓寮傝壊'},
+    ]
+    if (appType !== 'mob') {
+      interOptions.push(
+        {value: 'hover', label: '鎮诞鍙樿壊'}
+      )
+    }
+  }
+
+  if (interaction.length && interOptions.length) {
+    interaction = interaction.filter(m => interOptions.findIndex(cell => cell.value === m) > -1)
+  }
+
+  // let interItem = null
+
+  // if (interOptions.length === 1) {
+  //   interItem = {
+  //     type: 'radio',
+  //     field: interOptions[0].value,
+  //     label: interOptions[0].label,
+  //     initval: interaction.length === 1 ? 'true' : 'false',
+  //     required: false,
+  //     options: [
+  //       {value: 'true', label: '鍚敤'},
+  //       {value: 'false', label: '绂佺敤'}
+  //     ]
+  //   }
+  // } else {
+  //   interItem = {
+  //     type: 'checkbox',
+  //     field: 'interaction',
+  //     label: '浜や簰鏁堟灉',
+  //     initval: interaction,
+  //     required: false,
+  //     options: interOptions,
+  //     forbid: interOptions.length === 0
+  //   }
+  // }
+
   const cardWrapForm = [
     {
       type: 'text',
@@ -306,31 +374,27 @@
       ],
       forbid: subtype !== 'datacard' || appType === 'mob'
     },
+    // {
+    //   type: 'radio',
+    //   field: 'scale',
+    //   label: '鏀惧ぇ鏁堟灉',
+    //   initval: wrap.scale || 'false',
+    //   tooltip: '榧犳爣鎮诞浜庡崱鐗囦笂鏂规椂锛屽崱鐗囨斁澶�1.05鍊嶃��',
+    //   required: false,
+    //   options: [
+    //     {value: 'false', label: '鏃�'},
+    //     {value: 'true', label: '鏈�'},
+    //   ],
+    //   forbid: subtype === 'tablecard' || appType === 'mob'
+    // },
     {
-      type: 'radio',
-      field: 'scale',
-      label: '鏀惧ぇ鏁堟灉',
-      initval: wrap.scale || 'false',
-      tooltip: '榧犳爣鎮诞浜庡崱鐗囦笂鏂规椂锛屽崱鐗囨斁澶�1.05鍊嶃��',
+      type: 'checkbox',
+      field: 'interaction',
+      label: '浜や簰鏁堟灉',
+      initval: interaction,
       required: false,
-      options: [
-        {value: 'false', label: '鏃�'},
-        {value: 'true', label: '鏈�'},
-      ],
-      forbid: subtype === 'tablecard' || appType === 'mob'
-    },
-    {
-      type: 'radio',
-      field: 'parity',
-      label: '濂囧伓鑳屾櫙',
-      initval: wrap.parity || 'false',
-      tooltip: '鍋舵暟琛屼細娣诲姞鑳屾櫙鑹层��',
-      required: false,
-      options: [
-        {value: 'false', label: '鏃�'},
-        {value: 'true', label: '鏈�'},
-      ],
-      forbid: subtype === 'propcard'
+      options: interOptions,
+      forbid: interOptions.length === 0
     },
     {
       type: 'radio',
diff --git a/src/menu/components/card/double-data-card/options.jsx b/src/menu/components/card/double-data-card/options.jsx
index 16d9f40..7d632f0 100644
--- a/src/menu/components/card/double-data-card/options.jsx
+++ b/src/menu/components/card/double-data-card/options.jsx
@@ -133,21 +133,21 @@
       tooltip: '鏁版嵁鍗″彸涓婅浼氭樉绀烘敹璧峰紑鍏炽��',
       required: false,
       options: [
-        {value: 'false', label: '鏃�'},
-        {value: 'true', label: '鏈�'},
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
       ],
       forbid: appType === 'mob'
     },
     {
       type: 'radio',
       field: 'parity',
-      label: '濂囧伓鑳屾櫙',
+      label: '濂囧伓寮傝壊',
       initval: wrap.parity || 'false',
-      tooltip: '鍋舵暟琛屼細娣诲姞鑳屾櫙鑹层��',
+      tooltip: '瀛愯〃鍋舵暟琛屼細娣诲姞鑳屾櫙鑹层��',
       required: false,
       options: [
-        {value: 'false', label: '鏃�'},
-        {value: 'true', label: '鏈�'},
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
       ],
     },
     {
diff --git a/src/menu/components/card/prop-card/index.jsx b/src/menu/components/card/prop-card/index.jsx
index ff9f81e..c0b2914 100644
--- a/src/menu/components/card/prop-card/index.jsx
+++ b/src/menu/components/card/prop-card/index.jsx
@@ -315,6 +315,13 @@
   updateWrap = (res) => {
     const { card } = this.state
 
+    if (res.interaction) {
+      if (res.interaction.includes('scale')) {
+        res.scale = 'true'
+      }
+      delete res.interaction
+    }
+
     let _card = {...card, wrap: res}
 
     if (res.datatype === 'static') {
diff --git a/src/menu/components/card/table-card/index.jsx b/src/menu/components/card/table-card/index.jsx
index dd96ddb..5672f99 100644
--- a/src/menu/components/card/table-card/index.jsx
+++ b/src/menu/components/card/table-card/index.jsx
@@ -271,6 +271,15 @@
   }
 
   updateWrap = (res) => {
+    if (res.interaction) {
+      if (res.interaction.includes('parity')) {
+        res.parity = 'true'
+      }
+      if (res.interaction.includes('hover')) {
+        res.hover = 'true'
+      }
+      delete res.interaction
+    }
     this.updateComponent({...this.state.card, wrap: res})
   }
 
diff --git a/src/menu/components/share/actioncomponent/actionform/index.jsx b/src/menu/components/share/actioncomponent/actionform/index.jsx
index 75aa1cd..7dea9d8 100644
--- a/src/menu/components/share/actioncomponent/actionform/index.jsx
+++ b/src/menu/components/share/actioncomponent/actionform/index.jsx
@@ -965,7 +965,7 @@
           { required: item.readonly ? false : item.required, message: '璇疯緭鍏�' + item.label + '!' }
         ]
 
-        content = <CodeMirror mode="text/javascript" theme="cobalt"/>
+        content = <CodeMirror mode="text/javascript"/>
       }
 
       if (help && typeof(help) === 'function') {
diff --git a/src/menu/components/share/actioncomponent/formconfig.jsx b/src/menu/components/share/actioncomponent/formconfig.jsx
index ca241a6..fa273e6 100644
--- a/src/menu/components/share/actioncomponent/formconfig.jsx
+++ b/src/menu/components/share/actioncomponent/formconfig.jsx
@@ -1034,7 +1034,7 @@
       tooltip: '鎵ц鎴愬姛鍚庣殑杩斿洖鍊笺�傜郴缁熷嚱鏁板彲鎸囧畾杩斿洖鐨勫彉閲忥紙浠绗﹀紑澶达紝杩斿洖id鏃跺彲浣跨敤@id@锛夛紱鑷畾涔夊嚱鏁板彲鎸囧畾杩斿洖瀛楁锛堝id锛夈��',
       initVal: card.output || '',
       required: false,
-      forbid: viewType === 'popview'
+      // forbid: viewType === 'popview'
     },
     {
       type: 'text',
@@ -2207,7 +2207,7 @@
       tooltip: '鎵ц鎴愬姛鍚庣殑杩斿洖鍊笺�傜郴缁熷嚱鏁板彲鎸囧畾杩斿洖鐨勫彉閲忥紙浠绗﹀紑澶达紝杩斿洖id鏃跺彲浣跨敤@id@锛夛紱鑷畾涔夊嚱鏁板彲鎸囧畾杩斿洖瀛楁锛堝id锛夈��',
       initVal: card.output || '',
       required: false,
-      forbid: viewType === 'popview'
+      // forbid: viewType === 'popview'
     },
     {
       type: 'text',
diff --git a/src/menu/components/table/base-table/options.jsx b/src/menu/components/table/base-table/options.jsx
index 85ee2bf..288cd00 100644
--- a/src/menu/components/table/base-table/options.jsx
+++ b/src/menu/components/table/base-table/options.jsx
@@ -20,6 +20,17 @@
     },
     {
       type: 'radio',
+      field: 'parity',
+      label: '濂囧伓寮傝壊',
+      initval: wrap.parity || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ]
+    },
+    {
+      type: 'radio',
       field: 'bordered',
       label: '杈规',
       initval: wrap.bordered || 'true',
@@ -36,8 +47,8 @@
       initval: wrap.actionfixed !== 'true' ? 'false' : 'true',
       required: false,
       options: [
-        {value: 'true', label: '鏄�'},
-        {value: 'false', label: '鍚�'},
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
       ]
     },
     {
@@ -64,20 +75,6 @@
         {value: 'small', label: '灏�'},
         {value: 'mini', label: '杩蜂綘'},
       ]
-    },
-    {
-      type: 'select',
-      field: 'selected',
-      label: '鏁版嵁閫変腑',
-      initval: wrap.selected || 'false',
-      tooltip: '鍒濆鍖栵細鏁版嵁鍔犺浇鏃堕�変腑棣栬鏁版嵁锛屼粎鎵ц涓�娆°�傛暟鎹姞杞斤細姣忔鏁版嵁鍔犺浇鏃跺潎閫変腑棣栬锛堝綋鎸夐挳鎵ц瀹屾垚骞惰繑鍥炰富閿�兼椂锛岄粯璁ら�変腑涓婚敭鍊煎搴旇锛夈�傞�変腑鏍囪锛氳繑鍥炴暟鎹腑瀛樺湪 selected 瀛楁锛屼笖鍊间负 true 鐨勬暟鎹閫変腑銆傛敞锛氬惎鐢ㄦ棤浜哄�煎畧鏃舵棤鏁堛��',
-      required: false,
-      options: [
-        {value: 'false', label: '鏃�'},
-        {value: 'init', label: '鍒濆鍖�'},
-        {value: 'always', label: '鏁版嵁鍔犺浇'},
-        {value: 'sign', label: '閫変腑鏍囪'}
-      ],
     },
     // {
     //   type: 'radio',
@@ -138,15 +135,18 @@
       ]
     },
     {
-      type: 'number',
-      field: 'btnlimit',
-      label: '鎸夐挳闄愬埗',
-      initval: wrap.btnlimit || '',
-      tooltip: '鎸夐挳鏁伴噺闄愬埗锛岃秴鍑虹殑鎸夐挳浼氬湪鏇村涓笅鎷夋樉绀猴紝娉細鏇村涓殑鎸夐挳涓嶈缁戝畾鍙屽嚮浜嬩欢銆�',
-      min: 3,
-      max: 3000,
-      precision: 0,
-      required: false
+      type: 'select',
+      field: 'selected',
+      label: '鏁版嵁閫変腑',
+      initval: wrap.selected || 'false',
+      tooltip: '鍒濆鍖栵細鏁版嵁鍔犺浇鏃堕�変腑棣栬鏁版嵁锛屼粎鎵ц涓�娆°�傛暟鎹姞杞斤細姣忔鏁版嵁鍔犺浇鏃跺潎閫変腑棣栬锛堝綋鎸夐挳鎵ц瀹屾垚骞惰繑鍥炰富閿�兼椂锛岄粯璁ら�変腑涓婚敭鍊煎搴旇锛夈�傞�変腑鏍囪锛氳繑鍥炴暟鎹腑瀛樺湪 selected 瀛楁锛屼笖鍊间负 true 鐨勬暟鎹閫変腑銆傛敞锛氬惎鐢ㄦ棤浜哄�煎畧鏃舵棤鏁堛��',
+      required: false,
+      options: [
+        {value: 'false', label: '鏃�'},
+        {value: 'init', label: '鍒濆鍖�'},
+        {value: 'always', label: '鏁版嵁鍔犺浇'},
+        {value: 'sign', label: '閫変腑鏍囪'}
+      ],
     },
     {
       type: 'number',
@@ -211,6 +211,17 @@
     },
     {
       type: 'number',
+      field: 'btnlimit',
+      label: '鎸夐挳闄愬埗',
+      initval: wrap.btnlimit || '',
+      tooltip: '鎸夐挳鏁伴噺闄愬埗锛岃秴鍑虹殑鎸夐挳浼氬湪鏇村涓笅鎷夋樉绀猴紝娉細鏇村涓殑鎸夐挳涓嶈缁戝畾鍙屽嚮浜嬩欢銆�',
+      min: 3,
+      max: 3000,
+      precision: 0,
+      required: false
+    },
+    {
+      type: 'number',
       field: 'maxPageSize',
       label: '姣忛〉鏈�澶ф暟',
       initval: wrap.maxPageSize || '',
diff --git a/src/menu/components/table/edit-table/options.jsx b/src/menu/components/table/edit-table/options.jsx
index 7773bdf..8fefdd4 100644
--- a/src/menu/components/table/edit-table/options.jsx
+++ b/src/menu/components/table/edit-table/options.jsx
@@ -134,6 +134,17 @@
     },
     {
       type: 'radio',
+      field: 'parity',
+      label: '濂囧伓寮傝壊',
+      initval: wrap.parity || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ]
+    },
+    {
+      type: 'radio',
       field: 'bordered',
       label: '杈规',
       initval: wrap.bordered || 'true',
diff --git a/src/menu/components/table/normal-table/options.jsx b/src/menu/components/table/normal-table/options.jsx
index 416258c..413b0cd 100644
--- a/src/menu/components/table/normal-table/options.jsx
+++ b/src/menu/components/table/normal-table/options.jsx
@@ -73,6 +73,17 @@
     },
     {
       type: 'radio',
+      field: 'parity',
+      label: '濂囧伓寮傝壊',
+      initval: wrap.parity || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ]
+    },
+    {
+      type: 'radio',
       field: 'bordered',
       label: '杈规',
       initval: wrap.bordered || 'true',
@@ -155,20 +166,6 @@
       ]
     },
     {
-      type: 'select',
-      field: 'selected',
-      label: '鏁版嵁閫変腑',
-      initval: wrap.selected || 'false',
-      tooltip: '鍒濆鍖栵細鏁版嵁鍔犺浇鏃堕�変腑棣栬鏁版嵁锛屼粎鎵ц涓�娆°�傛暟鎹姞杞斤細姣忔鏁版嵁鍔犺浇鏃跺潎閫変腑棣栬锛堝綋鎸夐挳鎵ц瀹屾垚骞惰繑鍥炰富閿�兼椂锛岄粯璁ら�変腑涓婚敭鍊煎搴旇锛夈�傞�変腑鏍囪锛氳繑鍥炴暟鎹腑瀛樺湪 selected 瀛楁锛屼笖鍊间负 true 鐨勬暟鎹閫変腑銆�',
-      required: false,
-      options: [
-        {value: 'false', label: '鏃�'},
-        {value: 'init', label: '鍒濆鍖�'},
-        {value: 'always', label: '鏁版嵁鍔犺浇'},
-        {value: 'sign', label: '閫変腑鏍囪'}
-      ],
-    },
-    {
       type: 'color',
       field: 'borderColor',
       label: '杈规棰滆壊',
@@ -190,16 +187,18 @@
       ]
     },
     {
-      type: 'number',
-      field: 'btnlimit',
-      label: '鎸夐挳闄愬埗',
-      initval: wrap.btnlimit || '',
-      tooltip: '鎸夐挳鏁伴噺闄愬埗锛岃秴鍑虹殑鎸夐挳浼氬湪鏇村涓笅鎷夋樉绀猴紝娉細鏇村涓殑鎸夐挳涓嶈缁戝畾鍙屽嚮浜嬩欢銆�',
-      min: 3,
-      max: 3000,
-      precision: 0,
+      type: 'select',
+      field: 'selected',
+      label: '鏁版嵁閫変腑',
+      initval: wrap.selected || 'false',
+      tooltip: '鍒濆鍖栵細鏁版嵁鍔犺浇鏃堕�変腑棣栬鏁版嵁锛屼粎鎵ц涓�娆°�傛暟鎹姞杞斤細姣忔鏁版嵁鍔犺浇鏃跺潎閫変腑棣栬锛堝綋鎸夐挳鎵ц瀹屾垚骞惰繑鍥炰富閿�兼椂锛岄粯璁ら�変腑涓婚敭鍊煎搴旇锛夈�傞�変腑鏍囪锛氳繑鍥炴暟鎹腑瀛樺湪 selected 瀛楁锛屼笖鍊间负 true 鐨勬暟鎹閫変腑銆�',
       required: false,
-      forbid: appType !== '' || isprint
+      options: [
+        {value: 'false', label: '鏃�'},
+        {value: 'init', label: '鍒濆鍖�'},
+        {value: 'always', label: '鏁版嵁鍔犺浇'},
+        {value: 'sign', label: '閫変腑鏍囪'}
+      ],
     },
     {
       type: 'select',
@@ -254,6 +253,18 @@
     },
     {
       type: 'number',
+      field: 'btnlimit',
+      label: '鎸夐挳闄愬埗',
+      initval: wrap.btnlimit || '',
+      tooltip: '鎸夐挳鏁伴噺闄愬埗锛岃秴鍑虹殑鎸夐挳浼氬湪鏇村涓笅鎷夋樉绀猴紝娉細鏇村涓殑鎸夐挳涓嶈缁戝畾鍙屽嚮浜嬩欢銆�',
+      min: 3,
+      max: 3000,
+      precision: 0,
+      required: false,
+      forbid: appType !== '' || isprint
+    },
+    {
+      type: 'number',
       field: 'maxPageSize',
       label: '姣忛〉鏈�澶ф暟',
       initval: wrap.maxPageSize || '',
diff --git a/src/menu/stylecontroller/index.jsx b/src/menu/stylecontroller/index.jsx
index 308c5f3..6fb2319 100644
--- a/src/menu/stylecontroller/index.jsx
+++ b/src/menu/stylecontroller/index.jsx
@@ -1030,7 +1030,7 @@
                     label={<SwapOutlined title="瀵归綈"/>}
                     labelCol={{xs: { span: 24 }, sm: { span: 4 }}} wrapperCol={ {xs: { span: 24 }, sm: { span: 20 }} }
                   >
-                    <Radio.Group style={{whiteSpace: 'nowrap'}} defaultValue={card.float || 'left'} onChange={(e) => this.changeNormalStyle(e.target.value, 'float')}>
+                    <Radio.Group style={{whiteSpace: 'nowrap'}} defaultValue={card.float || (type === 'mk-button' ? 'center' : 'left')} onChange={(e) => this.changeNormalStyle(e.target.value, 'float')}>
                       <Radio value="left">宸�</Radio>
                       <Radio value="center">灞呬腑</Radio>
                       <Radio value="right">鍙�</Radio>
diff --git a/src/tabviews/custom/components/card/cardcellList/index.jsx b/src/tabviews/custom/components/card/cardcellList/index.jsx
index d009aa8..8a38647 100644
--- a/src/tabviews/custom/components/card/cardcellList/index.jsx
+++ b/src/tabviews/custom/components/card/cardcellList/index.jsx
@@ -867,9 +867,14 @@
             _data = [data]
           }
 
+          let _val = card.formula
+          if (/@username@|@fullName@|@bid@/ig.test(_val)) {
+            _val = _val.replace(/@username@/ig, sessionStorage.getItem('User_Name') || '').replace(/@fullName@/ig, sessionStorage.getItem('Full_Name') || '').replace(/@bid@/ig, data.$$BID || '')
+          }
+
           try {
             // eslint-disable-next-line
-            let func = new Function('data', card.formula)
+            let func = new Function('data', _val)
             val = func(_data)
           } catch (e) {
             console.warn(e)
@@ -904,6 +909,9 @@
           val = ''
         } else if (data) {
           let _val = card.formula
+          if (/@username@|@fullName@|@bid@/ig.test(_val)) {
+            _val = _val.replace(/@username@/ig, sessionStorage.getItem('User_Name') || '').replace(/@fullName@/ig, sessionStorage.getItem('Full_Name') || '').replace(/@bid@/ig, data.$$BID || '')
+          }
           Object.keys(data).forEach(key => {
             let reg = new RegExp('@' + key + '@', 'ig')
             _val = _val.replace(reg, data[key])
diff --git a/src/tabviews/custom/components/card/cardcellList/index.scss b/src/tabviews/custom/components/card/cardcellList/index.scss
index fbd7791..4c82d80 100644
--- a/src/tabviews/custom/components/card/cardcellList/index.scss
+++ b/src/tabviews/custom/components/card/cardcellList/index.scss
@@ -88,6 +88,7 @@
     background-size: cover;
   }
   .mk-cell-btn {
+    text-align: center;
     min-height: 0px;
     > div {width: 100%;max-width: 100%;}
     button:not(.ant-switch) {
@@ -97,6 +98,7 @@
       min-height: 28px;
       padding: 0;
       overflow: hidden;
+      text-align: inherit;
     }
     .ant-checkbox-wrapper:not(.square) {
       .ant-checkbox-inner, .ant-checkbox-checked::after {
diff --git a/src/tabviews/custom/components/card/data-card/index.jsx b/src/tabviews/custom/components/card/data-card/index.jsx
index 5c3df0b..9bc199c 100644
--- a/src/tabviews/custom/components/card/data-card/index.jsx
+++ b/src/tabviews/custom/components/card/data-card/index.jsx
@@ -134,7 +134,7 @@
     _config.wrap.scale = _config.wrap.scale === 'true' ? 'scale' : ''
     _config.wrap.layout = (_config.wrap.layout || 'grid') + '-layout float-' + (_config.wrap.cardFloat || 'left')
 
-    _config.wrap.wrapClass = `${_config.wrap.selStyle} ${_config.wrap.cardType || ''} ${_config.wrap.scale}`
+    _config.wrap.wrapClass = `${_config.wrap.selStyle} ${_config.wrap.cardType || ''} ${_config.wrap.scale} ${config.wrap.hover === 'true' ? 'mk-hover' : ''}`
 
     if (_config.wrap.shifting === 'true') {
       _config.wrap.shifting = 'shifting'
@@ -1252,8 +1252,6 @@
               if (config.wrap.parity === 'true') {
                 if (index % 2 === 1) {
                   className += 'mk-even-line '
-                } else {
-                  className += 'mk-odd-line '
                 }
               }
               if (item.$disabled) {
diff --git a/src/tabviews/custom/components/card/data-card/index.scss b/src/tabviews/custom/components/card/data-card/index.scss
index b8a0bbd..e26e385 100644
--- a/src/tabviews/custom/components/card/data-card/index.scss
+++ b/src/tabviews/custom/components/card/data-card/index.scss
@@ -40,12 +40,14 @@
     }
     .mk-even-line {
       .card-item-box {
-        background-color: var(--mk-sys-color1);
+        background-color: #fafafa;
       }
     }
-    .mk-even-line:hover, .mk-odd-line:hover {
-      .card-item-box {
-        background-color: var(--mk-sys-color2);
+  }
+  .data-zoom.mk-hover {
+    .mk-card {
+      .card-item-box:hover {
+        background-color: var(--mk-sys-color1);
       }
     }
   }
diff --git a/src/tabviews/custom/components/card/double-data-card/index.scss b/src/tabviews/custom/components/card/double-data-card/index.scss
index 4d27218..3f19dd4 100644
--- a/src/tabviews/custom/components/card/double-data-card/index.scss
+++ b/src/tabviews/custom/components/card/double-data-card/index.scss
@@ -194,14 +194,14 @@
     >.card-row-list {
       >.ant-col:not(.extend-card) {
         .card-item-box:hover {
-          background-color: var(--mk-sys-color2);
+          background-color: var(--mk-sys-color1);
         }
       }
     }
     .sub-card-wrap.mk-parity-bg {
       .ant-col:nth-child(even){
         .card-item-box:not(:hover) {
-          background-color: var(--mk-sys-color1);
+          background-color: #fafafa;
         }
       }
     }
@@ -270,7 +270,7 @@
     .sub-card-wrap.mk-parity-bg {
       .ant-col:nth-child(even){
         .card-item-box {
-          background-color: var(--mk-sys-color1);
+          background-color: #fafafa;
         }
       }
     }
diff --git a/src/tabviews/custom/components/card/table-card/index.jsx b/src/tabviews/custom/components/card/table-card/index.jsx
index 837dc07..ffc4b04 100644
--- a/src/tabviews/custom/components/card/table-card/index.jsx
+++ b/src/tabviews/custom/components/card/table-card/index.jsx
@@ -553,8 +553,6 @@
       if (config.wrap.parity === 'true') {
         if (lindex % 2 === 1) {
           className += ' mk-even-line'
-        } else {
-          className += ' mk-odd-line'
         }
       }
 
@@ -617,7 +615,7 @@
             selectedData={[]}
           /> : null
         }
-        <Row className="card-row-list" style={{height: config.wrap.contentHeight}}>
+        <Row className={`card-row-list ${config.wrap.hover === 'true' ? 'mk-hover' : ''}`} style={{height: config.wrap.contentHeight}}>
           {precards.map((item, index) => (
             <Col key={index} className="extend-card" span={24}>
               <div className="card-item-box" style={item.style}>
diff --git a/src/tabviews/custom/components/card/table-card/index.scss b/src/tabviews/custom/components/card/table-card/index.scss
index 7a4481b..10fb9be 100644
--- a/src/tabviews/custom/components/card/table-card/index.scss
+++ b/src/tabviews/custom/components/card/table-card/index.scss
@@ -42,12 +42,14 @@
     }
     .mk-even-line {
       .card-item-box {
-        background-color: var(--mk-sys-color1);
+        background-color: #fafafa;
       }
     }
-    .mk-even-line:hover, .mk-odd-line:hover {
-      .card-item-box {
-        background-color: var(--mk-sys-color2);
+  }
+  .card-row-list.mk-hover {
+    >.ant-col:not(.extend-card) {
+      .card-item-box:hover {
+        background-color: var(--mk-sys-color1);
       }
     }
   }
diff --git a/src/tabviews/custom/components/share/normalTable/index.jsx b/src/tabviews/custom/components/share/normalTable/index.jsx
index 4493e5c..be37c21 100644
--- a/src/tabviews/custom/components/share/normalTable/index.jsx
+++ b/src/tabviews/custom/components/share/normalTable/index.jsx
@@ -1167,7 +1167,7 @@
     }
 
     return (
-      <div className={`normal-custom-table ${setting.tableHeader || ''} ${height ? 'fixed-height' : ''} ${setting.mode || ''} table-vertical-${setting.vertical || 'middle'} table-col-${columns.length} ${fixed}`} style={style}>
+      <div className={`normal-custom-table ${setting.tableHeader || ''} ${setting.parity === 'true' ? 'mk-parity' : ''} ${height ? 'fixed-height' : ''} ${setting.mode || ''} table-vertical-${setting.vertical || 'middle'} table-col-${columns.length} ${fixed}`} style={style}>
         {(setting.tableType === 'radio' || setting.tableType === 'checkbox') && data && data.length > 0 ?
           <Switch title="鏀惰捣" className="main-pickup" checkedChildren="寮�" unCheckedChildren="鍏�" checked={pickup} onChange={this.pickupChange} /> : null
         }
diff --git a/src/tabviews/custom/components/share/normalTable/index.scss b/src/tabviews/custom/components/share/normalTable/index.scss
index f53051a..805be57 100644
--- a/src/tabviews/custom/components/share/normalTable/index.scss
+++ b/src/tabviews/custom/components/share/normalTable/index.scss
@@ -209,6 +209,11 @@
     color: var(--mk-table-color);
   }
 }
+.normal-custom-table.mk-parity {
+  .ant-table-tbody tr:nth-child(even) {
+    background: #fafafa;
+  }
+}
 .normal-custom-table:not(.ghost) {
   .ant-table-small > .ant-table-content .ant-table-thead > tr > th {
     background-color: #fafafa!important;
diff --git a/src/tabviews/custom/components/share/normalheader/index.scss b/src/tabviews/custom/components/share/normalheader/index.scss
index 8de5a23..f146dd3 100644
--- a/src/tabviews/custom/components/share/normalheader/index.scss
+++ b/src/tabviews/custom/components/share/normalheader/index.scss
@@ -38,6 +38,9 @@
         .ant-input-search-button {
           height: 28px;
         }
+        .ant-form-explain {
+          display: none;
+        }
       }
     }
   }
diff --git a/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx b/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
index 4bcdb13..a7571dd 100644
--- a/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
+++ b/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
@@ -2652,7 +2652,7 @@
         {setting.hasSubmit && edData.length > 0 ? <div className="edit-custom-table-btn-wrap" style={submit.wrapStyle}>
           <Button style={submit.style} onClick={() => setTimeout(() => {this.submit()}, 10)} loading={loading} className="submit-table" type="link">鎻愪氦</Button>
         </div> : null}
-        <div className={`edit-custom-table ${setting.tableHeader || ''} ${height ? 'fixed-height' : ''} ${setting.mode || ''} table-vertical-${setting.vertical || ''} mk-edit-${setting.editType || 'simple'}`} style={style}>
+        <div className={`edit-custom-table ${setting.tableHeader || ''} ${setting.parity === 'true' ? 'mk-parity' : ''} ${height ? 'fixed-height' : ''} ${setting.mode || ''} table-vertical-${setting.vertical || ''} mk-edit-${setting.editType || 'simple'}`} style={style}>
           <Table
             rowKey="$$uuid"
             components={components}
diff --git a/src/tabviews/custom/components/table/edit-table/normalTable/index.scss b/src/tabviews/custom/components/table/edit-table/normalTable/index.scss
index a3362b3..1fdde89 100644
--- a/src/tabviews/custom/components/table/edit-table/normalTable/index.scss
+++ b/src/tabviews/custom/components/table/edit-table/normalTable/index.scss
@@ -269,6 +269,11 @@
   //   }
   // }
 }
+.edit-custom-table.mk-parity {
+  .ant-table-tbody tr:nth-child(even) {
+    background: #fafafa;
+  }
+}
 .edit-custom-table.mk-edit-simple {
   table tbody tr td {
     min-height: 32px;
diff --git a/src/tabviews/zshare/actionList/newpagebutton/index.jsx b/src/tabviews/zshare/actionList/newpagebutton/index.jsx
index 7748e24..5d3bd93 100644
--- a/src/tabviews/zshare/actionList/newpagebutton/index.jsx
+++ b/src/tabviews/zshare/actionList/newpagebutton/index.jsx
@@ -182,10 +182,10 @@
                 console.warn(e)
               }
 
-              if (!_param) {
+              if (!_param || _param.error) {
                 notification.warning({
                   top: 92,
-                  message: '鏈幏鍙栧埌鎵撳嵃鍙傛暟锛岃嚜瀹氫箟鑴氭湰閿欒锛�',
+                  message: _param ? _param.error : '鏈幏鍙栧埌鎵撳嵃鍙傛暟锛岃嚜瀹氫箟鑴氭湰閿欒锛�',
                   duration: 5
                 })
                 return
@@ -203,10 +203,10 @@
               console.warn(e)
             }
 
-            if (!_param) {
+            if (!_param || _param.error) {
               notification.warning({
                 top: 92,
-                message: '鏈幏鍙栧埌鎵撳嵃鍙傛暟锛岃嚜瀹氫箟鑴氭湰閿欒锛�',
+                message: _param ? _param.error : '鏈幏鍙栧埌鎵撳嵃鍙傛暟锛岃嚜瀹氫箟鑴氭湰閿欒锛�',
                 duration: 5
               })
               return
diff --git a/src/tabviews/zshare/actionList/normalbutton/index.jsx b/src/tabviews/zshare/actionList/normalbutton/index.jsx
index 4f97b7d..1f42b73 100644
--- a/src/tabviews/zshare/actionList/normalbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -2475,9 +2475,38 @@
 
     if (!id) return
 
-    setTimeout(() => {
-      window.open('#/billprint/' + window.btoa(window.encodeURIComponent(JSON.stringify({ id: id, tempId: btn.verify.printTempId, pageId: btn.$MenuID || '', dataM: sessionStorage.getItem('dataM') }))))
-    }, 500)
+    if (btn.verify.preHandle === 'true' && btn.verify.pre_func && /#position-print/.test(btn.verify.pre_func)) {
+      MKEmitter.emit('queryModuleParam', btn.$menuId, (res) => {
+        let searches = {}
+        res.search && res.search.forEach(item => {
+          searches[item.key] = item.value
+        })
+        let _param = { id: id || '', tempId: btn.verify.printTempId, pageId: btn.$MenuID || '', dataM: sessionStorage.getItem('dataM')}
+
+        try {
+          // eslint-disable-next-line
+          let func = new Function('btn', 'searches', 'param', 'systemType', btn.verify.pre_func)
+          _param = func(btn, searches, _param, window.GLOB.systemType)
+        } catch (e) {
+          console.warn(e)
+        }
+
+        if (!_param || _param.error) {
+          notification.warning({
+            top: 92,
+            message: _param ? _param.error : '鏈幏鍙栧埌鎵撳嵃鍙傛暟锛岃嚜瀹氫箟鑴氭湰閿欒锛�',
+            duration: 5
+          })
+          return
+        }
+        
+        window.open('#/billprint/' + window.btoa(window.encodeURIComponent(JSON.stringify(_param))))
+      })
+    } else {
+      setTimeout(() => {
+        window.open('#/billprint/' + window.btoa(window.encodeURIComponent(JSON.stringify({ id: id, tempId: btn.verify.printTempId, pageId: btn.$MenuID || '', dataM: sessionStorage.getItem('dataM') }))))
+      }, 200)
+    }
   }
 
   sendWxMessage = (verify, id) => {
diff --git a/src/tabviews/zshare/actionList/popupbutton/index.jsx b/src/tabviews/zshare/actionList/popupbutton/index.jsx
index 0488978..cff2011 100644
--- a/src/tabviews/zshare/actionList/popupbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/popupbutton/index.jsx
@@ -339,7 +339,7 @@
           type={type}
           id={'button' + btn.uuid}
           title={disabled ? (btn.reason || '') : (btn.show === 'icon' ? btn.label : '')}
-          loading={loading}
+          loading={loading && !name}
           disabled={disabled}
           style={btn.style}
           icon={icon}
diff --git a/src/tabviews/zshare/actionList/printbutton/index.jsx b/src/tabviews/zshare/actionList/printbutton/index.jsx
index 6627f32..e16a32c 100644
--- a/src/tabviews/zshare/actionList/printbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/printbutton/index.jsx
@@ -1007,7 +1007,11 @@
     }
 
     let isDataM = sessionStorage.getItem('dataM') === 'true'
+    let custompage = /@pageSize@|@orderBy@/i.test(_dataresource + _customScript + _tailScript)
     let regoptions = [
+      { reg: /@orderBy@/ig, value: btn.verify.setting.order },
+      { reg: /@pageSize@/ig, value: '9999' },
+      { reg: /@pageIndex@/ig, value: '1'},
       { reg: /@ID@/ig, value: `'${ID}'`},
       { reg: /@BID@/ig, value: `'${BID || ''}'`},
       { reg: /@LoginUID@/ig, value: `'${sessionStorage.getItem('LoginUID') || ''}'`},
@@ -1125,7 +1129,11 @@
     let LText = ''
 
     if (_dataresource) {
-      LText = `/*system_query*/select ${arrFields} from (select ${arrFields} ,ROW_NUMBER() over(order by ${btn.verify.setting.order}) as rows from ${_dataresource}) tmptable order by tmptable.rows `
+      if (custompage) {
+        LText = `/*system_query*/select ${arrFields} from ${_dataresource} `
+      } else {
+        LText = `/*system_query*/select ${arrFields} from (select ${arrFields} ,ROW_NUMBER() over(order by ${btn.verify.setting.order}) as rows from ${_dataresource}) tmptable order by tmptable.rows `
+      }
     }
 
     if (_customScript) {
diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelout/customscript/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelout/customscript/index.jsx
index 444e507..fcc65cb 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelout/customscript/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelout/customscript/index.jsx
@@ -9,6 +9,7 @@
 import Utils from '@/utils/utils.js'
 import { checkSQL, getSearchFields } from '@/utils/utils-custom.js'
 import CodeMirror from '@/templates/zshare/codemirror'
+import MKEmitter from '@/utils/events.js'
 // import './index.scss'
 
 class CustomForm extends Component {
@@ -134,6 +135,9 @@
               loading: false,
               editItem: null
             })
+            if (values.uuid) {
+              MKEmitter.emit('editLineId', values.uuid)
+            }
             this.props.form.setFieldsValue({
               sql: ' '
             })
@@ -213,7 +217,7 @@
             <Form.Item label="鍙敤瀛楁">
               <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'鍏叡鍊硷紝璇锋寜鐓xxx@鏍煎紡浣跨敤銆�'}><span style={{color: '#1890ff'}}>BID, ID, LoginUID, SessionUid, UserID, Appkey, time_id, typename</span></Tooltip>,&nbsp;
               <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'绯荤粺鍙橀噺锛岀郴缁熶細瀹氫箟鍙橀噺骞惰祴鍊笺��'}><span style={{color: '#fa8c16'}}>UserName, FullName, RoleID, mk_departmentcode, mk_organization, mk_user_type, mk_nation, mk_province, mk_city, mk_district, mk_address</span></Tooltip>
-              {usefulfields ? <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'鎼滅储鏉′欢锛岃鎸夌収@xxx@鏍煎紡浣跨敤銆�'}>,&nbsp;{usefulfields}</Tooltip> : null}
+              <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'鎺掑簭銆佸垎椤典互鍙婃悳绱㈡潯浠跺彉閲忥紝璇锋寜鐓xxx@鏍煎紡浣跨敤銆�'}>, orderBy, pageSize, pageIndex{usefulfields ? ', ' + usefulfields : ''}</Tooltip>
               {linefields ? <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'琛ㄥ崟鍙婅鍙橀噺锛岀郴缁熶細瀹氫箟鍙橀噺骞惰祴鍊笺��'}>,&nbsp;{linefields}</Tooltip> : null}
             </Form.Item>
           </Col>
diff --git a/src/templates/sharecomponent/actioncomponent/verifyprint/utils.jsx b/src/templates/sharecomponent/actioncomponent/verifyprint/utils.jsx
index 60a1241..c33d899 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyprint/utils.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyprint/utils.jsx
@@ -34,8 +34,19 @@
       _dataresource = '(' + _dataresource + ') tb'
     }
 
+    let custompage = /@pageSize@|@orderBy@/i.test(_dataresource + _customScript)
+
     // 姝e垯鏇挎崲
     let regoptions = [{
+      reg: new RegExp('@orderBy@', 'ig'),
+      value: setting.order || ''
+    }, {
+      reg: new RegExp('@pageSize@', 'ig'),
+      value: 10
+    }, {
+      reg: new RegExp('@pageIndex@', 'ig'),
+      value: 1
+    }, {
       reg: /@datam@/ig,
       value: `''`
     }, {
@@ -61,10 +72,10 @@
 
     // 鏁版嵁婧愬鐞�, 瀛樺湪鏄剧ず鍒楁椂 
     if (_dataresource) {
-      if (setting.order) {
-        _dataresource = `/*system_query*/select ${arr_field} from (select ${arr_field} ,ROW_NUMBER() over(order by ${setting.order}) as rows from ${_dataresource}) tmptable order by tmptable.rows`
-      } else {
+      if (custompage || !setting.order) {
         _dataresource = `/*system_query*/select ${arr_field} from ${_dataresource}`
+      } else {
+        _dataresource = `/*system_query*/select ${arr_field} from (select ${arr_field} ,ROW_NUMBER() over(order by ${setting.order}) as rows from ${_dataresource}) tmptable order by tmptable.rows`
       }
     }
 
diff --git a/src/views/billprint/index.jsx b/src/views/billprint/index.jsx
index 85f4b7e..58d9659 100644
--- a/src/views/billprint/index.jsx
+++ b/src/views/billprint/index.jsx
@@ -367,7 +367,9 @@
             let getColumns = (cols) => {
               return cols.filter(item => {
                 if (item.Hide === 'true') return false
-                  
+
+                item.IsSort = 'false'
+
                 if (item.type === 'number') {
                   if (typeof(item.decimal) === 'number') {
                     item.round = Math.pow(10, item.decimal)
@@ -630,6 +632,9 @@
     if (cell.marks && cell.marks.length === 0) {
       cell.marks = null
     }
+    if (cell.anchors && cell.anchors.length === 0) {
+      cell.anchors = null
+    }
     
     if (['text', 'number', 'formula'].includes(cell.eleType)) {
       cell.innerHeight = cell.innerHeight || 'auto'
diff --git a/src/views/systemfunc/sidemenu/index.jsx b/src/views/systemfunc/sidemenu/index.jsx
index 53dc77f..a11e157 100644
--- a/src/views/systemfunc/sidemenu/index.jsx
+++ b/src/views/systemfunc/sidemenu/index.jsx
@@ -66,7 +66,7 @@
         if (menu) {
           menu = fromJS(menu).toJS()
           menu.param = {}
-          menu.param.$searchkey = 'PrintTempNO'
+          menu.param.$searchkey = 'printtempno'
           menu.param.$searchval = temp
           setTimeout(() => {
             MKEmitter.emit('modifyTabs', menu)
@@ -77,7 +77,7 @@
         if (menu) {
           menu = fromJS(menu).toJS()
           menu.param = {}
-          menu.param.$searchkey = 'PrintTempNO'
+          menu.param.$searchkey = 'printtempno'
           menu.param.$searchval = tabTemp
           setTimeout(() => {
             MKEmitter.emit('modifyTabs', menu)

--
Gitblit v1.8.0