From 65c9d768ad5bbb8d01babc4435801b0cb39c9b06 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 23 十二月 2024 10:44:11 +0800
Subject: [PATCH] Merge branch 'master' into positec

---
 src/index.js                                                     |   14 +
 src/menu/replaceField/settingform/index.jsx                      |  125 +++++++++++++-------
 src/templates/zshare/editTable/index.jsx                         |    7 +
 src/menu/components/editor/braft-editor/options.jsx              |   32 +++--
 src/templates/zshare/verifycard/index.jsx                        |   42 ++++++
 src/views/main/index.jsx                                         |   18 ++
 src/menu/components/search/main-search/dragsearch/card.jsx       |    2 
 src/views/mkiframe/index.jsx                                     |   18 ++
 src/menu/replaceField/index.jsx                                  |    6 
 src/templates/sharecomponent/searchcomponent/dragsearch/card.jsx |    2 
 src/tabviews/custom/components/editor/braft-editor/index.scss    |    5 
 src/api/index.js                                                 |    4 
 src/menu/components/editor/braft-editor/index.jsx                |    7 +
 src/views/billprint/index.jsx                                    |   18 ++
 src/menu/debug/index.jsx                                         |   11 +
 src/tabviews/zshare/actionList/normalbutton/index.jsx            |   12 +
 src/assets/css/main.scss                                         |   25 ++++
 17 files changed, 258 insertions(+), 90 deletions(-)

diff --git a/src/api/index.js b/src/api/index.js
index 531e7b7..12bfc3c 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -1260,7 +1260,7 @@
   /**
    * @description sql妫�楠�
    */
-  sDebug (sql) {
+  sDebug (sql, skip = false) {
     let param = {
       func: 's_debug_sql',
       exec_type: window.GLOB.execType || 'y',
@@ -1288,6 +1288,8 @@
 
     window.mkInfo(`/* sql 楠岃瘉 */\n${sql.replace(/\n\s{6,20}/ig, '\n')}`)
 
+    if (skip) return
+
     sql = sql.replace(/\n/ig, ' ')
 
     param.LText = Utils.formatOptions(sql, param.exec_type)
diff --git a/src/assets/css/main.scss b/src/assets/css/main.scss
index 68bd082..a4891e0 100644
--- a/src/assets/css/main.scss
+++ b/src/assets/css/main.scss
@@ -167,6 +167,31 @@
   border: 1px solid rgba(0, 0, 0, 0.07);
   background: rgba(0, 0, 0, 0);
 }
+.ant-calendar-header .ant-calendar-prev-century-btn::before, .ant-calendar-header .ant-calendar-prev-decade-btn::before, .ant-calendar-header .ant-calendar-prev-year-btn::before, .ant-calendar-header .ant-calendar-prev-century-btn::after, .ant-calendar-header .ant-calendar-prev-decade-btn::after, .ant-calendar-header .ant-calendar-prev-year-btn::after {
+  border-color: rgba(0, 0, 0, 0.65)!important;
+}
+.ant-calendar-header .ant-calendar-next-century-btn::before, .ant-calendar-header .ant-calendar-next-decade-btn::before, .ant-calendar-header .ant-calendar-next-year-btn::before, .ant-calendar-header .ant-calendar-next-century-btn::after, .ant-calendar-header .ant-calendar-next-decade-btn::after, .ant-calendar-header .ant-calendar-next-year-btn::after {
+  border-color: rgba(0, 0, 0, 0.65)!important;
+}
+.ant-calendar-header .ant-calendar-next-century-btn:hover::before, .ant-calendar-header .ant-calendar-next-decade-btn:hover::before, .ant-calendar-header .ant-calendar-next-year-btn:hover::before, .ant-calendar-header .ant-calendar-next-century-btn:hover::after, .ant-calendar-header .ant-calendar-next-decade-btn:hover::after, .ant-calendar-header .ant-calendar-next-year-btn:hover::after {
+  border-color: rgba(0, 0, 0, 0.85)!important;
+}
+.ant-calendar-header .ant-calendar-prev-century-btn:hover::before, .ant-calendar-header .ant-calendar-prev-decade-btn:hover::before, .ant-calendar-header .ant-calendar-prev-year-btn:hover::before, .ant-calendar-header .ant-calendar-prev-century-btn:hover::after, .ant-calendar-header .ant-calendar-prev-decade-btn:hover::after, .ant-calendar-header .ant-calendar-prev-year-btn:hover::after {
+  border-color: rgba(0, 0, 0, 0.85)!important;
+}
+.ant-calendar-header .ant-calendar-prev-month-btn::before, .ant-calendar-header .ant-calendar-prev-month-btn::after {
+  border-color: rgba(0, 0, 0, 0.65)!important;
+}
+.ant-calendar-header .ant-calendar-next-month-btn::before, .ant-calendar-header .ant-calendar-next-month-btn::after {
+  border-color: rgba(0, 0, 0, 0.65)!important;
+}
+.ant-calendar-header .ant-calendar-prev-month-btn:hover::before, .ant-calendar-header .ant-calendar-prev-month-btn:hover::after {
+  border-color: rgba(0, 0, 0, 0.85)!important;
+}
+.ant-calendar-header .ant-calendar-next-month-btn:hover::before, .ant-calendar-header .ant-calendar-next-month-btn:hover::after {
+  border-color: rgba(0, 0, 0, 0.85)!important;
+}
+
 // 閲嶇疆妯℃�佹婊氬姩鏉�
 .ant-modal-wrap::-webkit-scrollbar, .ant-drawer-wrapper-body::-webkit-scrollbar {
   width: 7px;
diff --git a/src/index.js b/src/index.js
index c6888a5..dc68995 100644
--- a/src/index.js
+++ b/src/index.js
@@ -361,11 +361,15 @@
     }
 
     if (config.systemRun === 'backend') {
-      GLOB.debugger = false
-      Object.defineProperty(window, 'backend', {
-        writable: false,
-        value: true
-      })
+      if (sessionStorage.getItem('systemRun') === 'front') {
+        GLOB.debugger = true
+      } else {
+        GLOB.debugger = false
+        Object.defineProperty(window, 'backend', {
+          writable: false,
+          value: true
+        })
+      }
     }
     if (config.debugger === 'forbid') {
       sessionStorage.removeItem('breakpoint')
diff --git a/src/menu/components/editor/braft-editor/index.jsx b/src/menu/components/editor/braft-editor/index.jsx
index 553f4b0..0878d3e 100644
--- a/src/menu/components/editor/braft-editor/index.jsx
+++ b/src/menu/components/editor/braft-editor/index.jsx
@@ -152,9 +152,16 @@
       if (res.tbStyle.includes('no-border') && (res.tbStyle.includes('bold-border') || res.tbStyle.includes('deep-border'))) {
         res.tbStyle = res.tbStyle.filter(item => item !== 'no-border')
       }
+
+      if (res.splitLine === 'true') {
+        res.tbStyle.push('deep-split')
+      }
+
       res.tbStyle = res.tbStyle.join(' ')
     }
 
+    delete res.splitLine
+
     let _card = {...card, wrap: res}
 
     if (res.datatype === 'public') {
diff --git a/src/menu/components/editor/braft-editor/options.jsx b/src/menu/components/editor/braft-editor/options.jsx
index 44defce..70910be 100644
--- a/src/menu/components/editor/braft-editor/options.jsx
+++ b/src/menu/components/editor/braft-editor/options.jsx
@@ -31,6 +31,13 @@
     roleList = []
   }
 
+  let tbStyle = wrap.tbStyle ? wrap.tbStyle.split(' ') : []
+  let splitLine = 'false'
+  if (tbStyle.includes('deep-split')) {
+    tbStyle = tbStyle.filter(n => n !== 'deep-split')
+    splitLine = 'true'
+  }
+
   const cardWrapForm = [
     {
       type: 'text',
@@ -134,7 +141,7 @@
       type: 'checkbox',
       field: 'tbStyle',
       label: '琛ㄦ牸鏍峰紡',
-      initval: wrap.tbStyle ? wrap.tbStyle.split(' ') : [],
+      initval: tbStyle,
       tooltip: '瀵屾枃鏈腑琛ㄦ牸鐨勬牱寮忥紝娉細閫夋嫨鈥滆竟妗嗗姞绮椻�濇垨鈥滆竟妗嗛鑹插姞娣扁�濇椂鈥滄棤杈规鈥濇棤鏁堛��',
       required: false,
       options: [
@@ -146,18 +153,17 @@
       ],
       span: 24
     },
-    // {
-    //   type: 'radio',
-    //   field: 'firstTr',
-    //   label: '琛ㄦ牸棣栬',
-    //   initval: wrap.firstTr || 'deep',
-    //   tooltip: '瀵屾枃鏈腑table鐨勯琛岃儗鏅鑹层��',
-    //   required: false,
-    //   options: [
-    //     {value: 'deep', label: '娣辫壊'},
-    //     {value: 'light', label: '娴呰壊'},
-    //   ]
-    // },
+    {
+      type: 'radio',
+      field: 'splitLine',
+      label: '鍒嗗壊绾垮姞娣�',
+      initval: splitLine,
+      required: false,
+      options: [
+        {value: 'false', label: '鍚�'},
+        {value: 'true', label: '鏄�'},
+      ],
+    },
     {
       type: 'radio',
       field: 'permission',
diff --git a/src/menu/components/search/main-search/dragsearch/card.jsx b/src/menu/components/search/main-search/dragsearch/card.jsx
index 03f5b65..e10a9d5 100644
--- a/src/menu/components/search/main-search/dragsearch/card.jsx
+++ b/src/menu/components/search/main-search/dragsearch/card.jsx
@@ -152,7 +152,7 @@
             wrapperCol={{style: {width: (100 - labelwidth) + '%'}}}
             label={card.labelShow !== 'false' ? card.label : ''}
             required={card.required === 'true'}
-            help={card.field + (card.datefield ? ', ' + card.datefield : '') + (card.advanced === 'true' ? '锛堥珮绾ф悳绱級' : '')}
+            help={`${card.field || ''} ${card.datefield ? ', ' + card.datefield : ''} ${card.Hide === 'true' ? '锛堥殣钘忥級' : ''} ${card.advanced === 'true' ? '锛堥珮绾ф悳绱級' : ''}`}
           >
             {formItem}
           </Form.Item>
diff --git a/src/menu/debug/index.jsx b/src/menu/debug/index.jsx
index 6364e8e..c2bf056 100644
--- a/src/menu/debug/index.jsx
+++ b/src/menu/debug/index.jsx
@@ -637,9 +637,12 @@
     if (!_prev) return _back
 
     let tbs = []
-    _prev.replace(/\/\*[^/*]+\*\//g, '').replace(/\n|\r/g, ' ').split(/\sdeclare\s/ig).forEach(line => {
-      if (!/^\s*(@|#)[a-zA-Z0-9_]+\s+table\s+\(/ig.test(line)) return
-      let tb = line.match(/(@|#)[a-zA-Z0-9_]+\s+table\s+\(.+(\)|date|datetime)\s*\)/ig)
+    _prev.replace(/\/\*[^/*]+\*\//g, '').replace(/\n|\r/g, ' ').split(/\sdeclare\s+|\screate\s+table\s+/ig).forEach(line => {
+      if (/^\s*(@|#)[a-zA-Z0-9_]+\s+table\s+\(/ig.test(line)) {
+        line = line.replace(/\s+table\s+\(/, '(')
+      }
+      if (!/^\s*(@|#)[a-zA-Z0-9_]+\s*\(/ig.test(line)) return
+      let tb = line.match(/(@|#)[a-zA-Z0-9_]+\s*\(.+(\)|date|datetime)\s*\)/ig)
 
       if (tb && tb.length === 1) {
         tbs.push(tb[0])
@@ -651,7 +654,7 @@
 
       if (!tbName) return
 
-      let content = tb.replace(/(@|#)[a-zA-Z0-9_]+\s+table\s+\(\s*/, '').replace(/\s*\)$/, '')
+      let content = tb.replace(/(@|#)[a-zA-Z0-9_]+\s*\(\s*/, '').replace(/\s*\)$/, '')
       content = content.replace(/decimal\(\s*\d+\s*,\s*\d+\s*\)/ig, 'decimal')
 
       let keys = []
diff --git a/src/menu/replaceField/index.jsx b/src/menu/replaceField/index.jsx
index 822ac40..d7d29ec 100644
--- a/src/menu/replaceField/index.jsx
+++ b/src/menu/replaceField/index.jsx
@@ -89,9 +89,9 @@
 
       if (res.resource === 'custom') {
         if (res.reType === 'name') {
-          let map = {[res.label.toLowerCase()]: {
-            FieldDec: res.label,
-            FieldName: res.field,
+          let map = {[res.field.toLowerCase()]: {
+            FieldDec: res.field,
+            FieldName: res.label,
             datatype: ''
           }}
   
diff --git a/src/menu/replaceField/settingform/index.jsx b/src/menu/replaceField/settingform/index.jsx
index 91d3236..9d20e58 100644
--- a/src/menu/replaceField/settingform/index.jsx
+++ b/src/menu/replaceField/settingform/index.jsx
@@ -1,6 +1,6 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Tooltip, Select, Radio, AutoComplete, Modal } from 'antd'
+import { Form, Row, Col, Tooltip, Select, Radio, AutoComplete, Input, Modal } from 'antd'
 import { QuestionCircleOutlined, SwapRightOutlined, DeleteOutlined } from '@ant-design/icons'
 
 // import './index.scss'
@@ -14,27 +14,38 @@
   state = {
     resource: 'custom',
     reType: 'field',
-    field: '',
-    label: '',
-    fields: [],
-    labels: []
+    records: []
   }
 
-  UNSAFE_componentWillMount() {
+  componentDidMount () {
     let records = localStorage.getItem('replaceRecord')
 
     if (records) {
       records = JSON.parse(records)
 
-      let fields = records.fields || []
-      let labels = records.labels || []
+      if (!Array.isArray(records)) {
+        localStorage.removeItem('replaceRecord')
+        records = []
+      }
 
-      this.setState({fields, labels, field: fields[0] || '', label: labels[0] || ''})
+      this.setState({records})
+
+      let field = ''
+      let label = ''
+      records.forEach(item => {
+        if (item.reType !== 'field' || field) return
+
+        field = item.value
+        label = item.label
+      })
+
+      this.props.form.setFieldsValue({field, label})
     }
-
   }
 
   handleConfirm = () => {
+    const { reType } = this.state
+
     // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭�
     return new Promise((resolve, reject) => {
       this.props.form.validateFieldsAndScroll((err, values) => {
@@ -42,28 +53,30 @@
           if (values.resource === 'custom') {
             let records = localStorage.getItem('replaceRecord')
 
+            if (reType === 'name') {
+              values.field = values.orifield
+              values.label = values.name
+  
+              delete values.orifield
+              delete values.name
+            }
+
             if (records) {
               records = JSON.parse(records)
             } else {
-              records = {fields: [], labels: []}
+              records = []
             }
 
-            records.fields.unshift(values.field)
-            records.labels.unshift(values.label)
+            let field = values.field.toLowerCase()
+            records = records.filter(item => item.reType !== reType || item.value.toLowerCase() !== field)
 
-            let _fields = []
-            let _labels = []
+            records.unshift({
+              value: values.field,
+              label: values.label,
+              reType
+            })
 
-            records.fields = records.fields.filter(m => {
-              if (_fields.includes(m.toLowerCase())) return false
-              _fields.push(m.toLowerCase())
-              return true
-            })
-            records.labels = records.labels.filter(m => {
-              if (_labels.includes(m.toLowerCase())) return false
-              _labels.push(m.toLowerCase())
-              return true
-            })
+            this.setState({records: records})
 
             localStorage.setItem('replaceRecord', JSON.stringify(records))
           }
@@ -82,16 +95,33 @@
       content: '',
       onOk() {
         localStorage.removeItem('replaceRecord')
-        that.setState({fields: [], labels: []})
+        that.setState({records: []})
       },
       onCancel() {}
     })
   }
 
+  complete = (key) => {
+    const { records, reType } = this.state
+
+    let label = ''
+    records.forEach(item => {
+      if (item.reType === reType && key === item.value) {
+        label = item.label
+      }
+    })
+
+    if (reType === 'name') {
+      this.props.form.setFieldsValue({name: label})
+    } else {
+      this.props.form.setFieldsValue({label: label})
+    }
+  }
+
   render() {
     const { tables } = this.props
     const { getFieldDecorator } = this.props.form
-    const { resource, fields, labels, field, label, reType } = this.state
+    const { resource, records, reType } = this.state
 
     const formItemLayout = {
       labelCol: {
@@ -104,14 +134,15 @@
       }
     }
 
-    let _fields = fields
-    if (field) {
-      _fields = fields.filter(item => item.toLowerCase().indexOf(field.toLowerCase()) > -1)
-    }
-    let _labels = labels
-    if (label) {
-      _labels = labels.filter(item => item.indexOf(label) > -1)
-    }
+    let _fields1 = []
+    let _fields2 = []
+    records.forEach(item => {
+      if (item.reType === 'field') {
+        _fields1.push(item.value)
+      } else {
+        _fields2.push(item.value)
+      }
+    })
 
     return (
       <Form {...formItemLayout}>
@@ -170,56 +201,56 @@
           {resource === 'custom' && reType === 'field' ? <Col span={20}>
             <Form.Item label="瀛楁">
               {getFieldDecorator('field', {
-                initialValue: field,
+                initialValue: '',
                 rules: [
                   {
                     required: true,
                     message: '璇疯緭鍏ュ瓧娈�!'
                   }
                 ]
-              })(<AutoComplete dataSource={_fields} autoFocus onSearch={(val) => this.setState({ field: val})} placeholder="" />)}
+              })(<AutoComplete dataSource={_fields1} onSelect={this.complete} filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0} autoFocus placeholder="" />)}
             </Form.Item>
           </Col> : null}
           {resource === 'custom' && reType === 'field' ? <Col span={20}>
             <Form.Item label="鍚嶇О">
               {getFieldDecorator('label', {
-                initialValue: label,
+                initialValue: '',
                 rules: [
                   {
                     required: true,
                     message: '璇疯緭鍏ュ悕绉�!'
                   }
                 ]
-              })(<AutoComplete dataSource={_labels} onSearch={(val) => this.setState({ label: val})} placeholder="" />)}
+              })(<Input autoComplete="off"/>)}
             </Form.Item>
           </Col> : null}
           {resource === 'custom' && reType === 'name' ? <Col span={20}>
             <Form.Item label="鍘熷瓧娈�">
-              {getFieldDecorator('label', {
-                initialValue: label,
+              {getFieldDecorator('orifield', {
+                initialValue: '',
                 rules: [
                   {
                     required: true,
-                    message: '璇疯緭鍏ュ悕绉�!'
+                    message: '璇疯緭鍏ュ師瀛楁!'
                   }
                 ]
-              })(<AutoComplete dataSource={_labels} autoFocus onSearch={(val) => this.setState({ label: val})} placeholder="" />)}
+              })(<AutoComplete dataSource={_fields2} onSelect={this.complete} filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0} autoFocus placeholder="" />)}
             </Form.Item>
           </Col> : null}
           {resource === 'custom' && reType === 'name' ? <Col span={20}>
             <Form.Item label="鏇挎崲涓�">
-              {getFieldDecorator('field', {
-                initialValue: field,
+              {getFieldDecorator('name', {
+                initialValue: '',
                 rules: [
                   {
                     required: true,
                     message: '璇疯緭鍏ュ瓧娈�!'
                   }
                 ]
-              })(<AutoComplete dataSource={_fields} onSearch={(val) => this.setState({ field: val})} placeholder="" />)}
+              })(<Input autoComplete="off"/>)}
             </Form.Item>
           </Col> : null}
-          {resource === 'custom' && fields.length > 0 ? <Col span={24}>
+          {resource === 'custom' && records.length > 0 ? <Col span={24}>
             <DeleteOutlined onClick={this.clear} style={{float: 'right', fontSize: '18px', marginTop: '-10px', cursor: 'pointer', color: '#ff4d4f'}} title="娓呯┖鍘嗗彶璁板綍" />
           </Col> : null}
         </Row>
diff --git a/src/tabviews/custom/components/editor/braft-editor/index.scss b/src/tabviews/custom/components/editor/braft-editor/index.scss
index 37fd26d..ea58f85 100644
--- a/src/tabviews/custom/components/editor/braft-editor/index.scss
+++ b/src/tabviews/custom/components/editor/braft-editor/index.scss
@@ -74,6 +74,11 @@
     }
   }
 }
+.custom-braft-editor-box.deep-split {
+  .braft-content hr {
+    border-color: rgba(0, 0, 0, 0.85)!important;
+  }
+}
 
 .custom-braft-editor-box::after {
   content: ' ';
diff --git a/src/tabviews/zshare/actionList/normalbutton/index.jsx b/src/tabviews/zshare/actionList/normalbutton/index.jsx
index 1128b97..ed3d7a8 100644
--- a/src/tabviews/zshare/actionList/normalbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -1588,7 +1588,7 @@
               }, 600)
             }
 
-            this.triggerNote(res, _param.ID) // 娑堟伅
+            this.triggerNote(res, _param) // 娑堟伅
             this.execSuccess(res)
           } else {
             this.execError(res)
@@ -1825,6 +1825,16 @@
       })
     }
 
+    if (/@.*@/.test(url)) {
+      Object.keys(param).forEach(key => {
+        let reg = new RegExp('@' + key + '@', 'ig')
+        if (reg.test(url)) {
+          url = url.replace(reg, param[key])
+          delete param[key]
+        }
+      })
+    }
+
     let _params = {
       url: url,
       method: btn.method || 'post'
diff --git a/src/templates/sharecomponent/searchcomponent/dragsearch/card.jsx b/src/templates/sharecomponent/searchcomponent/dragsearch/card.jsx
index 0f771e9..b8e407f 100644
--- a/src/templates/sharecomponent/searchcomponent/dragsearch/card.jsx
+++ b/src/templates/sharecomponent/searchcomponent/dragsearch/card.jsx
@@ -155,7 +155,7 @@
             wrapperCol={{style: {width: (100 - labelwidth) + '%'}}}
             label={card.labelShow !== 'false' ? card.label : ''}
             required={card.required === 'true'}
-            help={(card.field || '') + (card.datefield ? ', ' + card.datefield : '') + (card.advanced === 'true' ? '锛堥珮绾ф悳绱級' : '')}
+            help={`${card.field || ''} ${card.datefield ? ', ' + card.datefield : ''} ${card.Hide === 'true' ? '锛堥殣钘忥級' : ''} ${card.advanced === 'true' ? '锛堥珮绾ф悳绱級' : ''}`}
           >
             {formItem}
           </Form.Item>
diff --git a/src/templates/zshare/editTable/index.jsx b/src/templates/zshare/editTable/index.jsx
index 777fb99..c8a9cda 100644
--- a/src/templates/zshare/editTable/index.jsx
+++ b/src/templates/zshare/editTable/index.jsx
@@ -526,7 +526,12 @@
 
       if (!unique) return
 
-      data.unshift(res.data)
+      if (type === 'excelcolumn') {
+        data.push(res.data)
+      } else {
+        data.unshift(res.data)
+      }
+
       this.setState({ data, editingKey: '', editLineId: res.data.uuid || '' }, () => {
         this.props.onChange(data)
       })
diff --git a/src/templates/zshare/verifycard/index.jsx b/src/templates/zshare/verifycard/index.jsx
index 7d0eff2..7d2be11 100644
--- a/src/templates/zshare/verifycard/index.jsx
+++ b/src/templates/zshare/verifycard/index.jsx
@@ -1733,9 +1733,12 @@
     if (!_prev) return _back
 
     let tbs = []
-    _prev.replace(/\/\*[^/*]+\*\//g, '').replace(/\n|\r/g, ' ').split(/\sdeclare\s/ig).forEach(line => {
-      if (!/^\s*(@|#)[a-zA-Z0-9_]+\s+table\s+\(/ig.test(line)) return
-      let tb = line.match(/(@|#)[a-zA-Z0-9_]+\s+table\s+\(.+(\)|date|datetime)\s*\)/ig)
+    _prev.replace(/\/\*[^/*]+\*\//g, '').replace(/\n|\r/g, ' ').split(/\sdeclare\s+|\screate\s+table\s+/ig).forEach(line => {
+      if (/^\s*(@|#)[a-zA-Z0-9_]+\s+table\s+\(/ig.test(line)) {
+        line = line.replace(/\s+table\s+\(/, '(')
+      }
+      if (!/^\s*(@|#)[a-zA-Z0-9_]+\s*\(/ig.test(line)) return
+      let tb = line.match(/(@|#)[a-zA-Z0-9_]+\s*\(.+(\)|date|datetime)\s*\)/ig)
 
       if (tb && tb.length === 1) {
         tbs.push(tb[0])
@@ -1747,7 +1750,7 @@
 
       if (!tbName) return
 
-      let content = tb.replace(/(@|#)[a-zA-Z0-9_]+\s+table\s+\(\s*/, '').replace(/\s*\)$/, '')
+      let content = tb.replace(/(@|#)[a-zA-Z0-9_]+\s*\(\s*/, '').replace(/\s*\)$/, '')
       content = content.replace(/decimal\(\s*\d+\s*,\s*\d+\s*\)/ig, 'decimal')
 
       let keys = []
@@ -2075,6 +2078,10 @@
         }
       })
     } else {
+      let sql = this.getSysExecSql(verify, false)
+  
+      Api.sDebug(sql, true)
+
       this.setState({ verify })
     }
   }
@@ -2144,6 +2151,10 @@
         }
       })
     } else {
+      let sql = this.getSysExecSql(verify, false)
+  
+      Api.sDebug(sql, true)
+
       MKEmitter.emit('editLineId', values.uuid)
   
       this.setState({ verify })
@@ -2209,6 +2220,29 @@
         this.setState({ verify })
       }
     } else {
+      let sql = this.getSysBackSql(verify.cbScripts, card.cbTable)
+      
+      if (sql) {
+        let defSql = this.getSysExecSql(verify, true)
+
+        sql = `${defSql}
+          ${sql}
+        `
+
+        if (card.output) {
+          sql += `
+            aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg,${card.output} as mk_b_id`
+        } else {
+          sql += `
+            aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg`
+        }
+
+        sql = sql.replace(/@typename@/ig, `'typename'`)
+        sql = sql.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, `''`)
+
+        Api.sDebug(sql, true)
+      }
+
       MKEmitter.emit('editLineId', values.uuid)
 
       this.setState({ verify })
diff --git a/src/views/billprint/index.jsx b/src/views/billprint/index.jsx
index 25fbfea..f89e307 100644
--- a/src/views/billprint/index.jsx
+++ b/src/views/billprint/index.jsx
@@ -99,10 +99,22 @@
         configurable: true,
         enumerable: true,
         set(value) {
-          if (value + '' === 'false') {
-            window.GLOB.debugger = false
-          } else {
+          if (value === true) {
             window.GLOB.debugger = true
+          } else if (value === 0) {
+            if (window.backend) {
+              sessionStorage.setItem('systemRun', 'front')
+              window.location.reload()
+            } else {
+              window.mkInfo('绯荤粺褰撳墠鏈娇鐢ㄥ悗绔剼鏈紒')
+            }
+          } else if (value === false) {
+            if (sessionStorage.getItem('systemRun') === 'front') {
+              sessionStorage.removeItem('systemRun')
+              window.location.reload()
+            } else {
+              window.GLOB.debugger = false
+            }
           }
         }
       })
diff --git a/src/views/main/index.jsx b/src/views/main/index.jsx
index 82241b8..6971bcf 100644
--- a/src/views/main/index.jsx
+++ b/src/views/main/index.jsx
@@ -32,10 +32,22 @@
         configurable: true,
         enumerable: true,
         set(value) {
-          if (value + '' === 'false') {
-            window.GLOB.debugger = false
-          } else {
+          if (value === true) {
             window.GLOB.debugger = true
+          } else if (value === 0) {
+            if (window.backend) {
+              sessionStorage.setItem('systemRun', 'front')
+              window.location.reload()
+            } else {
+              window.mkInfo('绯荤粺褰撳墠鏈娇鐢ㄥ悗绔剼鏈紒')
+            }
+          } else if (value === false) {
+            if (sessionStorage.getItem('systemRun') === 'front') {
+              sessionStorage.removeItem('systemRun')
+              window.location.reload()
+            } else {
+              window.GLOB.debugger = false
+            }
           }
         }
       })
diff --git a/src/views/mkiframe/index.jsx b/src/views/mkiframe/index.jsx
index 4730c77..cfd57df 100644
--- a/src/views/mkiframe/index.jsx
+++ b/src/views/mkiframe/index.jsx
@@ -124,10 +124,22 @@
         configurable: true,
         enumerable: true,
         set(value) {
-          if (value + '' === 'false') {
-            window.GLOB.debugger = false
-          } else {
+          if (value === true) {
             window.GLOB.debugger = true
+          } else if (value === 0) {
+            if (window.backend) {
+              sessionStorage.setItem('systemRun', 'front')
+              window.location.reload()
+            } else {
+              window.mkInfo('绯荤粺褰撳墠鏈娇鐢ㄥ悗绔剼鏈紒')
+            }
+          } else if (value === false) {
+            if (sessionStorage.getItem('systemRun') === 'front') {
+              sessionStorage.removeItem('systemRun')
+              window.location.reload()
+            } else {
+              window.GLOB.debugger = false
+            }
           }
         }
       })

--
Gitblit v1.8.0