From 0d6459d3bcd158d358752d2a6721a80e1192e110 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 24 十一月 2020 19:10:11 +0800
Subject: [PATCH] 2020-11-24

---
 src/utils/utils-datamanage.js                                                      |    8 +-
 src/templates/modalconfig/index.scss                                               |    8 +-
 src/tabviews/custom/components/share/tabtransfer/index.jsx                         |    4 
 src/templates/zshare/formconfig.jsx                                                |    2 
 src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.jsx |    2 
 src/assets/mobimg/nightingale.png                                                  |    0 
 src/assets/mobimg/ring.png                                                         |    0 
 src/tabviews/zshare/settingcomponent/index.jsx                                     |   11 ---
 src/tabviews/calendar/index.jsx                                                    |    4 
 src/tabviews/zshare/actionList/exceloutbutton/index.jsx                            |    4 
 src/menu/modelsource/option.jsx                                                    |    2 
 src/templates/modalconfig/index.jsx                                                |   69 +++++++++++-----------
 src/tabviews/custom/index.jsx                                                      |    4 
 src/serviceWorker.js                                                               |    8 +-
 src/templates/modalconfig/dragelement/index.jsx                                    |    3 
 src/views/billprint/index.jsx                                                      |    4 
 src/menu/menushell/card.jsx                                                        |    3 +
 src/assets/mobimg/normal-table.png                                                 |    0 
 src/assets/mobimg/pie.png                                                          |    0 
 src/menu/components/table/normal-table/index.jsx                                   |    7 -
 src/menu/components/tabs/tabcomponents/card.jsx                                    |    3 +
 src/templates/modalconfig/dragelement/card.jsx                                     |    3 
 src/utils/utils.js                                                                 |   14 ++--
 23 files changed, 80 insertions(+), 83 deletions(-)

diff --git a/src/assets/mobimg/nightingale.png b/src/assets/mobimg/nightingale.png
index 3a01a4d..dfc2962 100644
--- a/src/assets/mobimg/nightingale.png
+++ b/src/assets/mobimg/nightingale.png
Binary files differ
diff --git a/src/assets/mobimg/normal-table.png b/src/assets/mobimg/normal-table.png
new file mode 100644
index 0000000..cab6066
--- /dev/null
+++ b/src/assets/mobimg/normal-table.png
Binary files differ
diff --git a/src/assets/mobimg/pie.png b/src/assets/mobimg/pie.png
index a0c10a3..353f792 100644
--- a/src/assets/mobimg/pie.png
+++ b/src/assets/mobimg/pie.png
Binary files differ
diff --git a/src/assets/mobimg/ring.png b/src/assets/mobimg/ring.png
index a55d575..0032801 100644
--- a/src/assets/mobimg/ring.png
+++ b/src/assets/mobimg/ring.png
Binary files differ
diff --git a/src/menu/components/table/normal-table/index.jsx b/src/menu/components/table/normal-table/index.jsx
index fd79a3f..b30ea71 100644
--- a/src/menu/components/table/normal-table/index.jsx
+++ b/src/menu/components/table/normal-table/index.jsx
@@ -14,9 +14,8 @@
 import './index.scss'
 
 const SettingComponent = asyncIconComponent(() => import('@/menu/datasource'))
-const WrapComponent = asyncIconComponent(() => import('../data-card/wrapsetting'))
+// const WrapComponent = asyncIconComponent(() => import('../data-card/wrapsetting'))
 const SearchComponent = asyncComponent(() => import('@/menu/searchcomponent'))
-const CardComponent = asyncComponent(() => import('./cardcomponent'))
 
 const { confirm } = Modal
 
@@ -243,7 +242,6 @@
   }
 
   render() {
-    const { menu } = this.props
     const { card } = this.state
 
     return (
@@ -262,7 +260,7 @@
           <div className="mk-popover-control">
             <Icon className="plus" title="娣诲姞鍗$墖" onClick={this.addCard} type="plus" />
             <Icon className="plus" title="娣诲姞鎼滅储" onClick={this.addSearch} type="plus-circle" />
-            {menu ? <WrapComponent config={card} sysRoles={menu.sysRoles} MenuType={menu.MenuType} updateConfig={this.updateComponent} /> : null}
+            {/* {menu ? <WrapComponent config={card} sysRoles={menu.sysRoles} MenuType={menu.MenuType} updateConfig={this.updateComponent} /> : null} */}
             <Icon className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle} type="font-colors" />
             <Icon className="close" title="鍒犻櫎缁勪欢" type="delete" onClick={() => this.props.deletecomponent(card.uuid)} />
             {card.wrap.datatype !== 'static' ? <SettingComponent config={card} updateConfig={this.updateComponent} /> : null}
@@ -270,7 +268,6 @@
         } trigger="hover">
           <Icon type="tool" />
         </Popover>
-        {card.subcards.map(subcard => (<CardComponent key={subcard.uuid} MenuType={menu ? menu.MenuType : ''} cards={card} card={subcard} updateElement={this.updateCard} deleteElement={this.deleteCard}/>))}
       </div>
     )
   }
diff --git a/src/menu/components/tabs/tabcomponents/card.jsx b/src/menu/components/tabs/tabcomponents/card.jsx
index 32a3955..79df0f7 100644
--- a/src/menu/components/tabs/tabcomponents/card.jsx
+++ b/src/menu/components/tabs/tabcomponents/card.jsx
@@ -11,6 +11,7 @@
 const DataCard = asyncComponent(() => import('@/menu/components/card/data-card'))
 const PropCard = asyncComponent(() => import('@/menu/components/card/prop-card'))
 const TableCard = asyncComponent(() => import('@/menu/components/card/table-card'))
+const NormalTable = asyncComponent(() => import('@/menu/components/table/normal-table'))
 
 const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
   const originalIndex = findCard(id).index
@@ -60,6 +61,8 @@
       return (<PropCard card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'table' && card.subtype === 'tablecard') {
       return (<TableCard card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
+    } else if (card.type === 'table' && card.subtype === 'normaltable') {
+      return (<NormalTable card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     }
   }
 
diff --git a/src/menu/menushell/card.jsx b/src/menu/menushell/card.jsx
index 04b6b4f..15108b4 100644
--- a/src/menu/menushell/card.jsx
+++ b/src/menu/menushell/card.jsx
@@ -11,6 +11,7 @@
 const DataCard = asyncComponent(() => import('@/menu/components/card/data-card'))
 const PropCard = asyncComponent(() => import('@/menu/components/card/prop-card'))
 const TableCard = asyncComponent(() => import('@/menu/components/card/table-card'))
+const NormalTable = asyncComponent(() => import('@/menu/components/table/normal-table'))
 
 const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
   const originalIndex = findCard(id).index
@@ -56,6 +57,8 @@
       return (<PropCard card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'table' && card.subtype === 'tablecard') {
       return (<TableCard card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
+    } else if (card.type === 'table' && card.subtype === 'normaltable') {
+      return (<NormalTable card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     }
   }
   return (
diff --git a/src/menu/modelsource/option.jsx b/src/menu/modelsource/option.jsx
index 51ca926..c40e0f3 100644
--- a/src/menu/modelsource/option.jsx
+++ b/src/menu/modelsource/option.jsx
@@ -8,6 +8,7 @@
 import card1 from '@/assets/mobimg/card1.png'
 import card2 from '@/assets/mobimg/card2.png'
 import TableCard from '@/assets/mobimg/table-card.png'
+import NormalTable from '@/assets/mobimg/normal-table.png'
 import Pie from '@/assets/mobimg/pie.png'
 import Pie1 from '@/assets/mobimg/ring.png'
 import Pie2 from '@/assets/mobimg/nightingale.png'
@@ -22,6 +23,7 @@
   { type: 'menu', url: card1, component: 'card', subtype: 'datacard', title: '鏁版嵁鍗�', config: `[{"uuid":"160135809128212dm7i29fim9ksto9od","setting":{"width":6},"style":{"paddingTop":"15px","marginTop":"4px","paddingRight":"15px","marginRight":"8px","marginLeft":"8px","backgroundColor":"rgba(255, 255, 255, 1)","borderColor":"#e8e8e8","paddingLeft":"15px","marginBottom":"4px","borderWidth":"1px","paddingBottom":"10px"},"backStyle":{},"elements":[{"datatype":"static","width":12,"marks":null,"height":1,"value":"鍏冲崟","style":{},"prefix":"","postfix":"","format":"","eleType":"text","uuid":"160231860159931untbea62sgokunc5s"},{"datatype":"static","width":12,"marks":null,"style":{"color":"rgba(250, 219, 20, 1)","textAlign":"right"},"btnstyle":{},"eleType":"icon","icon":"question-circle","field":"","uuid":"1602318768361nv8ql4t47sgcsn88b0u"},{"datatype":"static","width":24,"marks":null,"height":1,"innerHeight":36,"value":"100","style":{"fontSize":"24px","fontWeight":"500","color":"rgba(0, 0, 0, 1)"},"prefix":"","btnstyle":{},"postfix":"","format":"","eleType":"text","uuid":"1602318817884v70gtgb65ubnm8mbcvv"},{"color":"#1890ff","width":24,"marks":null,"maxValue":100,"style":{"color":"rgba(250, 140, 22, 1)","paddingTop":"20px","paddingBottom":"10px"},"btnstyle":{},"eleType":"slider","field":"int1","uuid":"16023188871233rkktuvpp1h077igrsu"},{"eleType":"splitline","width":24,"color":"#e8e8e8","uuid":"1602320017038n31bk9o831ggug0tu0b","marks":null,"style":{"marginTop":"10px","marginBottom":"10px"},"btnstyle":{}},{"datatype":"static","width":12,"marks":null,"height":1,"value":"100","style":{"marginTop":"6px"},"prefix":"鍏冲崟","btnstyle":{},"postfix":"","format":"","eleType":"text","uuid":"1602320061243drd7lf3agvn04kgr175"}],"backElements":[]}]` },
   { type: 'menu', url: card2, component: 'card', subtype: 'propcard', title: '灞炴�у崱', config: `[{"uuid":"1603681387259qaqf1127f72esmtchge","setting":{"width":6,"type":"simple"},"style":{"paddingTop":"15px","marginTop":"8px","paddingRight":"15px","marginRight":"8px","marginLeft":"8px","borderColor":"#e8e8e8","paddingLeft":"15px","marginBottom":"8px","borderWidth":"1px","paddingBottom":"15px"},"backStyle":{},"elements":[{"datatype":"static","width":12,"marks":null,"height":1,"value":"瓒呮椂宸ュ崟","style":{"color":"rgba(67, 67, 67, 0.51)"},"prefix":"","postfix":"","format":"","eleType":"text","uuid":"1603681402945qnkgm7q8cng65evn5ev"},{"eleType":"icon","datatype":"static","width":12,"icon":"question-circle","tooltip":"瓒呮椂宸ュ崟","uuid":"1603681473384i2crkbtofg4pu76k06a","marks":null,"style":{"textAlign":"right","color":"rgba(250, 219, 20, 1)"}},{"datatype":"static","width":24,"marks":null,"height":1,"innerHeight":36,"value":"100","style":{"fontSize":"24px","color":"rgba(0, 0, 0, 1)"},"prefix":"","postfix":"","format":"","eleType":"number","uuid":"1603681539870d704ufqf98kc6t7537t"},{"color":"rgba(250, 219, 20, 1)","datatype":"static","width":24,"marks":null,"maxValue":100,"value":50,"style":{"paddingTop":"10px","paddingBottom":"10px"},"eleType":"slider","uuid":"1603683067556mvupau0odvrtv45u7o8"},{"eleType":"splitline","width":24,"color":"#e8e8e8","uuid":"1603683117981t9k55k8an430fuppmci","marks":null,"style":{"paddingTop":"5px","paddingBottom":"5px"}},{"datatype":"static","width":12,"marks":null,"height":1,"value":"100","style":{"color":"rgba(0, 0, 0, 0.65)","marginTop":"10px"},"prefix":"瓒呮椂宸ュ崟  ","postfix":"","format":"","eleType":"text","uuid":"1603683136553uvsmkfohkft9idbfkhu"}],"backElements":[]}]` },
   { type: 'menu', url: TableCard, component: 'table', subtype: 'tablecard', title: '琛ㄦ牸', width: 12 },
+  { type: 'menu', url: NormalTable, component: 'table', subtype: 'normaltable', title: '琛ㄦ牸', width: 12 },
   { type: 'menu', url: line, component: 'line', subtype: 'line', title: '鎶樼嚎鍥�' },
   { type: 'menu', url: line1, component: 'line', subtype: 'line1', title: '闃舵鎶樼嚎鍥�' },
   { type: 'menu', url: bar, component: 'bar', subtype: 'bar', title: '鏌辩姸鍥�' },
diff --git a/src/serviceWorker.js b/src/serviceWorker.js
index f2e6fd2..7039f75 100644
--- a/src/serviceWorker.js
+++ b/src/serviceWorker.js
@@ -41,7 +41,7 @@
         // Add some additional logging to localhost, pointing developers to the
         // service worker/PWA documentation.
         navigator.serviceWorker.ready.then(() => {
-          console.log(
+          console.info(
             'This web app is being served cache-first by a service worker. To learn more, visit https://bit.ly/CRA-PWA'
           );
         });
@@ -68,7 +68,7 @@
               // At this point, the updated precached content has been fetched,
               // but the previous service worker will still serve the older
               // content until all client tabs are closed.
-              console.log(
+              console.info(
                 'New content is available and will be used when all tabs for this page are closed. See https://bit.ly/CRA-PWA.'
               );
 
@@ -80,7 +80,7 @@
               // At this point, everything has been precached.
               // It's the perfect time to display a
               // "Content is cached for offline use." message.
-              console.log('Content is cached for offline use.');
+              console.info('Content is cached for offline use.');
 
               // Execute callback
               if (config && config.onSuccess) {
@@ -118,7 +118,7 @@
       }
     })
     .catch(() => {
-      console.log(
+      console.info(
         'No internet connection found. App is running in offline mode.'
       );
     });
diff --git a/src/tabviews/calendar/index.jsx b/src/tabviews/calendar/index.jsx
index ee5cbdd..f9c7c92 100644
--- a/src/tabviews/calendar/index.jsx
+++ b/src/tabviews/calendar/index.jsx
@@ -405,8 +405,8 @@
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
     if ((options.sysType === 'local' && !window.GLOB.systemType) || window.debugger === true) {
-      param.custom_script &&  console.log(`${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${param.custom_script}`)
-      LText &&  console.log(LText)
+      param.custom_script &&  console.info(`${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${param.custom_script}`)
+      LText &&  console.info(LText)
     }
     
     param.custom_script = Utils.formatOptions(param.custom_script)
diff --git a/src/tabviews/custom/components/share/tabtransfer/index.jsx b/src/tabviews/custom/components/share/tabtransfer/index.jsx
index 3d94645..a10e6ee 100644
--- a/src/tabviews/custom/components/share/tabtransfer/index.jsx
+++ b/src/tabviews/custom/components/share/tabtransfer/index.jsx
@@ -156,8 +156,8 @@
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
     if ((options.sysType === 'local' && !window.GLOB.systemType) || window.debugger === true) {
-      _customScript &&  console.log(`${_dataresource ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
-      _dataresource &&  console.log(_dataresource)
+      _customScript &&  console.info(`${_dataresource ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
+      _dataresource &&  console.info(_dataresource)
     }
 
     return {
diff --git a/src/tabviews/custom/index.jsx b/src/tabviews/custom/index.jsx
index 9392a96..bd7a621 100644
--- a/src/tabviews/custom/index.jsx
+++ b/src/tabviews/custom/index.jsx
@@ -351,8 +351,8 @@
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
     if ((options.sysType === 'local' && !window.GLOB.systemType) || window.debugger === true) {
-      _customScript &&  console.log(`${_dataresource ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
-      _dataresource &&  console.log(_dataresource)
+      _customScript &&  console.info(`${_dataresource ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
+      _dataresource &&  console.info(_dataresource)
     }
 
     return {
diff --git a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
index 53ad8fe..3a85b94 100644
--- a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
@@ -631,8 +631,8 @@
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
     if ((options.sysType === 'local' && !window.GLOB.systemType) || window.debugger === true) {
-      param.custom_script &&  console.log(`${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${param.custom_script}`)
-      LText &&  console.log(LText)
+      param.custom_script && console.info(`${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${param.custom_script}`)
+      LText && console.info(LText)
     }
     
     param.custom_script = Utils.formatOptions(param.custom_script)
diff --git a/src/tabviews/zshare/settingcomponent/index.jsx b/src/tabviews/zshare/settingcomponent/index.jsx
index 14f627a..cc01bcb 100644
--- a/src/tabviews/zshare/settingcomponent/index.jsx
+++ b/src/tabviews/zshare/settingcomponent/index.jsx
@@ -22,17 +22,6 @@
     confirmLoading: false, // 鑷畾涔夎缃ā鎬佹鍔犺浇涓�
   }
 
-  /**
-   * @description 鍗$墖鍒濆鍖栵紝璁剧疆鍗$墖鐨勯厤缃俊鎭�
-   */
-  UNSAFE_componentWillMount () {
-    
-  }
-
-  UNSAFE_componentWillReceiveProps(nextProps) {
-    
-  }
-
   shouldComponentUpdate (nextProps, nextState) {
     return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState))
   }
diff --git a/src/templates/modalconfig/dragelement/card.jsx b/src/templates/modalconfig/dragelement/card.jsx
index d162322..633e483 100644
--- a/src/templates/modalconfig/dragelement/card.jsx
+++ b/src/templates/modalconfig/dragelement/card.jsx
@@ -9,7 +9,7 @@
 const { MonthPicker } = DatePicker
 const { TextArea } = Input
 
-const Card = ({ id, card, cols, moveCard, findCard, editCard, closeCard, copyCard }) => {
+const Card = ({ id, card, cols, moveCard, findCard, editCard, closeCard, copyCard, showField }) => {
   const originalIndex = findCard(id).index
   const [{ isDragging }, drag] = useDrag({
     item: { type: 'form', id, originalIndex },
@@ -145,6 +145,7 @@
             </div>
             <div className={'ant-col ant-form-item-control-wrapper ant-col-xs-24 ' + wrapCol}>
               {formItem}
+              {showField ? card.field : ''}
               <div className="input-mask"></div>
             </div>
           </div>}
diff --git a/src/templates/modalconfig/dragelement/index.jsx b/src/templates/modalconfig/dragelement/index.jsx
index eb60daf..5f978c3 100644
--- a/src/templates/modalconfig/dragelement/index.jsx
+++ b/src/templates/modalconfig/dragelement/index.jsx
@@ -7,7 +7,7 @@
 import Card from './card'
 import './index.scss'
 
-const Container = ({list, group, setting, placeholder, handleList, handleForm, closeForm }) => {
+const Container = ({list, group, setting, placeholder, handleList, handleForm, closeForm, showField }) => {
   const [cards, setCards] = useState(list)
   const moveCard = (id, atIndex) => {
     const { card, index } = findCard(id)
@@ -137,6 +137,7 @@
             id={card.uuid}
             cols={setting.cols}
             card={card}
+            showField={showField}
             moveCard={moveCard}
             editCard={editCard}
             closeCard={closeCard}
diff --git a/src/templates/modalconfig/index.jsx b/src/templates/modalconfig/index.jsx
index a6f6da3..04b0365 100644
--- a/src/templates/modalconfig/index.jsx
+++ b/src/templates/modalconfig/index.jsx
@@ -5,7 +5,7 @@
 import { DndProvider } from 'react-dnd'
 import HTML5Backend from 'react-dnd-html5-backend'
 import moment from 'moment'
-import { Button, Card, Modal, Collapse, notification, Select, List, Icon, Empty, Popover } from 'antd'
+import { Button, Card, Modal, Collapse, notification, Select, List, Icon, Empty, Popover, Switch } from 'antd'
 
 import Api from '@/api'
 import Utils from '@/utils/utils.js'
@@ -66,7 +66,8 @@
     curgroup: null,        // 褰撳墠缁勶紝鏂板缓鎴栫紪杈�
     sources: null,         // 琛ㄥ崟绫诲瀷
     sqlVerifing: false,    // sql楠岃瘉
-    openEdition: ''        // 缂栬緫鐗堟湰鏍囪锛岄槻姝㈠浜烘搷浣�
+    openEdition: '',       // 缂栬緫鐗堟湰鏍囪锛岄槻姝㈠浜烘搷浣�
+    showField: false       // 鏄剧ず琛ㄥ崟瀛楁鍊�
   }
 
   /**
@@ -1090,21 +1091,21 @@
   }
 
   render () {
-    const { config, source } = this.state
+    const { config, source, dict } = this.state
 
     return (
       <div className="modal-form-board">
         <DndProvider backend={HTML5Backend}>
           <div className="tools">
             <Collapse accordion defaultActiveKey="1" bordered={false}>
-              <Panel header={this.state.dict['header.menu.basedata']} key="0" id="modal-basedata">
+              <Panel header={dict['header.menu.basedata']} key="0" id="modal-basedata">
                 <MenuForm
-                  dict={this.state.dict}
+                  dict={dict}
                   formlist={this.state.modalformlist}
                 />
                 <div className="ant-col ant-form-item-label">
-                  <label title={this.state.dict['header.menu.table.add']}>
-                    {this.state.dict['header.menu.table.add']}
+                  <label title={dict['header.menu.table.add']}>
+                    {dict['header.menu.table.add']}
                   </label>
                 </div>
                 <Select
@@ -1113,7 +1114,7 @@
                   className="tables"
                   style={{ width: '100%' }}
                   optionFilterProp="children"
-                  value={this.state.dict['header.menu.table.placeholder']}
+                  value={dict['header.menu.table.placeholder']}
                   onChange={this.onTableChange}
                   getPopupContainer={() => document.getElementById('modal-basedata')}
                   filterOption={(input, option) => {
@@ -1135,32 +1136,30 @@
                   </List.Item>}
                 />}
               </Panel>
-              <Panel header={this.state.dict['header.menu.form']} key="1">
+              <Panel header={dict['header.menu.form']} key="1">
                 <div className="search-element">
                   {source.map((item, index) => {
                     return (<SourceElement key={index} content={item}/>)
                   })}
                 </div>
-                <Button type="primary" block onClick={() => this.queryField()}>{this.state.dict['header.menu.form.add']}</Button>
-                <Button type="primary" block onClick={() => this.handleGroup()}>{this.state.dict['header.menu.group.add']}</Button>
+                <Button type="primary" block onClick={() => this.queryField()}>{dict['header.menu.form.add']}</Button>
+                <Button type="primary" block onClick={() => this.handleGroup()}>{dict['header.menu.group.add']}</Button>
               </Panel>
             </Collapse>
           </div>
           <div className="setting">
-            <Card title={this.state.dict['header.menu.form.configurable']} bordered={false} extra={
+            <Card title={dict['header.menu.form.configurable']} bordered={false} extra={
               <div>
-                <EditComponent dict={this.state.dict} type="form" config={this.state.config} refresh={this.updateConfig}/>
-                <Button type="primary" onClick={this.submitConfig} loading={this.state.menuloading}>{this.state.dict['model.save']}</Button>
-                <Button onClick={this.cancelConfig}>{this.state.dict['model.back']}</Button>
+                <EditComponent dict={dict} type="form" config={this.state.config} refresh={this.updateConfig}/>
+                <Button type="primary" onClick={this.submitConfig} loading={this.state.menuloading}>{dict['model.save']}</Button>
+                <Button onClick={this.cancelConfig}>{dict['model.back']}</Button>
               </div>
             } style={{ width: '100%' }}>
               <Icon type="setting" onClick={this.changeSetting} />
               <div className="ant-modal-content" style={{width: config.setting.width + '%'}}>
-                <button type="button" className="ant-modal-close">
-                  <span className="ant-modal-close-x"><Icon type="close"/></span>
-                </button>
                 <div className="ant-modal-header">
                   <div className="ant-modal-title">{config.setting.title}</div>
+                  <Switch checkedChildren={dict['model.switch.open']} unCheckedChildren={dict['model.switch.close']} defaultChecked={this.state.showField} onChange={(val) => this.setState({showField: val})} />
                 </div>
                 <div className="ant-modal-body">
                   <div className="modal-form">
@@ -1183,7 +1182,8 @@
                               group={group}
                               list={group.sublist}
                               setting={config.setting}
-                              placeholder={this.state.dict['header.form.modal.placeholder']}
+                              showField={this.state.showField}
+                              placeholder={dict['header.form.modal.placeholder']}
                               handleList={this.handleList}
                               handleForm={this.handleForm}
                               closeForm={this.closeForm}
@@ -1196,7 +1196,8 @@
                       <DragElement
                         list={config.fields}
                         setting={config.setting}
-                        placeholder={this.state.dict['header.form.modal.placeholder']}
+                        showField={this.state.showField}
+                        placeholder={dict['header.form.modal.placeholder']}
                         handleList={this.handleList}
                         handleForm={this.handleForm}
                         closeForm={this.closeForm}
@@ -1207,10 +1208,10 @@
                 <div className="ant-modal-footer">
                   <div>
                     <button type="button" className="ant-btn">
-                      <span>{this.state.dict['model.cancel']}</span>
+                      <span>{dict['model.cancel']}</span>
                     </button>
                     <button type="button" className="ant-btn ant-btn-primary">
-                      <span>{this.state.dict['model.confirm']}</span>
+                      <span>{dict['model.confirm']}</span>
                     </button>
                   </div>
                   <div className="action-mask"></div>
@@ -1220,7 +1221,7 @@
           </div>
         </DndProvider>
         <Modal
-          title={this.state.dict['model.edit']}
+          title={dict['model.edit']}
           visible={this.state.visible}
           width={850}
           maskClosable={false}
@@ -1230,7 +1231,7 @@
           destroyOnClose
         >
           {<ModalForm
-            dict={this.state.dict}
+            dict={dict}
             card={this.state.card}
             formlist={this.state.formlist}
             inputSubmit={this.handleSubmit}
@@ -1239,13 +1240,13 @@
         </Modal>
         <Modal
           wrapClassName="modal-fields"
-          title={this.state.dict['model.edit']}
+          title={dict['model.edit']}
           visible={this.state.tableVisible}
           width={'65vw'}
           maskClosable={false}
           style={{minWidth: '900px', maxWidth: '1200px'}}
           onOk={this.addFieldSubmit}
-          cancelText={this.state.dict['model.close']}
+          cancelText={dict['model.close']}
           onCancel={() => { this.setState({ tableVisible: false }) }}
           destroyOnClose
         >
@@ -1257,7 +1258,7 @@
           }
         </Modal>
         <Modal
-          title={this.state.dict['model.edit']}
+          title={dict['model.edit']}
           visible={this.state.settingVisible}
           width={700}
           maskClosable={false}
@@ -1267,7 +1268,7 @@
         >
           <SettingForm
             config={config}
-            dict={this.state.dict}
+            dict={dict}
             isSubTab={!!this.props.editTab}
             inputSubmit={this.settingSave}
             wrappedComponentRef={(inst) => this.settingRef = inst}
@@ -1280,16 +1281,16 @@
           visible={this.state.closeVisible}
           onCancel={() => { this.setState({closeVisible: false}) }}
           footer={[
-            <Button key="save" className="mk-btn mk-green" loading={this.state.closeloading} onClick={this.submitConfig}>{this.state.dict['model.save']}</Button>,
-            <Button key="confirm" className="mk-btn mk-yellow" onClick={this.handleViewBack}>{this.state.dict['model.notsave']}</Button>,
-            <Button key="cancel" onClick={() => { this.setState({closeVisible: false}) }}>{this.state.dict['model.cancel']}</Button>
+            <Button key="save" className="mk-btn mk-green" loading={this.state.closeloading} onClick={this.submitConfig}>{dict['model.save']}</Button>,
+            <Button key="confirm" className="mk-btn mk-yellow" onClick={this.handleViewBack}>{dict['model.notsave']}</Button>,
+            <Button key="cancel" onClick={() => { this.setState({closeVisible: false}) }}>{dict['model.cancel']}</Button>
           ]}
           destroyOnClose
         >
-          {this.state.dict['header.menu.config.placeholder']}
+          {dict['header.menu.config.placeholder']}
         </Modal>
         <Modal
-          title={this.state.dict['header.menu.group.manage']}
+          title={dict['header.menu.group.manage']}
           visible={this.state.groupVisible}
           width={700}
           maskClosable={false}
@@ -1298,8 +1299,8 @@
           destroyOnClose
         >
           <GroupForm
+            dict={dict}
             config={config}
-            dict={this.state.dict}
             group={this.state.curgroup}
             inputSubmit={this.handleGroupSave}
             wrappedComponentRef={(inst) => this.groupRef = inst}
diff --git a/src/templates/modalconfig/index.scss b/src/templates/modalconfig/index.scss
index b7f0633..4fbda08 100644
--- a/src/templates/modalconfig/index.scss
+++ b/src/templates/modalconfig/index.scss
@@ -133,9 +133,11 @@
           z-index: 10;
           background: transparent;
           min-height: 50px;
-        }
-        .ant-modal-close {
-          opacity: 0.3;
+          .ant-switch {
+            position: absolute;
+            top: 15px;
+            right: 10px;
+          }
         }
         .ant-modal-footer {
           position: relative;
diff --git a/src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.jsx b/src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.jsx
index 1f161ae..02acde2 100644
--- a/src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.jsx
+++ b/src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.jsx
@@ -408,7 +408,7 @@
             </Col>
             <Col span={12}>
               <Form.Item label={
-                <Tooltip placement="topLeft" title={'鐖剁骇瀛楁鍊间笌椤剁骇鏍囪瘑锛堥粯璁ゅ�间负绌猴級鐩稿悓鏃讹紝瑙嗕负椤剁骇鑺傜偣銆�'}>
+                <Tooltip placement="topLeft" title={'鐖剁骇瀛楁鍊间笌椤剁骇鏍囪瘑鐩稿悓鏃讹紝瑙嗕负椤剁骇鑺傜偣銆�'}>
                   <Icon type="question-circle" />
                   椤剁骇鏍囪瘑
                 </Tooltip>
diff --git a/src/templates/zshare/formconfig.jsx b/src/templates/zshare/formconfig.jsx
index 0524048..46ceaa8 100644
--- a/src/templates/zshare/formconfig.jsx
+++ b/src/templates/zshare/formconfig.jsx
@@ -210,7 +210,7 @@
       key: 'mark',
       label: '椤剁骇鏍囪瘑',
       initVal: setting.mark || '',
-      tooltip: '鐖剁骇瀛楁鍊间笌椤剁骇鏍囪瘑锛堥粯璁ゅ�间负绌猴級鐩稿悓鏃讹紝瑙嗕负椤剁骇鑺傜偣銆�',
+      tooltip: '鐖剁骇瀛楁鍊间笌椤剁骇鏍囪瘑鐩稿悓鏃讹紝瑙嗕负椤剁骇鑺傜偣銆�',
       required: false,
       readonly: false,
       rules: [
diff --git a/src/utils/utils-datamanage.js b/src/utils/utils-datamanage.js
index a107fdc..0022c68 100644
--- a/src/utils/utils-datamanage.js
+++ b/src/utils/utils-datamanage.js
@@ -185,8 +185,8 @@
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
     if ((options.sysType === 'local' && !window.GLOB.systemType) || window.debugger === true) {
-      _customScript &&  console.log(`${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
-      LText &&  console.log(LText)
+      _customScript &&  console.info(`${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
+      LText &&  console.info(LText)
     }
     
     param.custom_script = Utils.formatOptions(_customScript)
@@ -286,8 +286,8 @@
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
     if ((options.sysType === 'local' && !window.GLOB.systemType) || window.debugger === true) {
-      _customScript &&  console.log(`${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
-      LText &&  console.log(LText)
+      _customScript &&  console.info(`${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
+      LText &&  console.info(LText)
     }
     
     param.custom_script = Utils.formatOptions(_customScript)
diff --git a/src/utils/utils.js b/src/utils/utils.js
index 987a514..76f7af3 100644
--- a/src/utils/utils.js
+++ b/src/utils/utils.js
@@ -965,7 +965,7 @@
         ${_sqlBottom}
         `
         fsql = fsql.replace(/\n\s{8}/ig, '\n')
-        console.log(fsql)
+        console.info(fsql)
       }
     } else { // s_sDataDictb_excelIn 浜戠瀵嗛挜楠岃瘉鍙傛暟
       _sql = `
@@ -1153,19 +1153,17 @@
       `
 
     // 琛ㄥ崟鍙橀噺璧嬪��
-    _initFormfields = _initFormfields.join(',')
-    if (_initFormfields) {
+    if (_initFormfields.length > 0) {
       _sql += `
         /* 琛ㄥ崟鍙橀噺璧嬪�� */
-        select ${_initFormfields}
+        select ${_initFormfields.join(',')}
         `
     }
     // 鏄剧ず鍒楀彉閲忚祴鍊�
-    _initColfields = _initColfields.join(',')
-    if (_initColfields) {
+    if (_initColfields.length > 0) {
       _sql += `
         /* 鏄剧ず鍒楀彉閲忚祴鍊� */
-        select ${_initColfields}
+        select ${_initColfields.join(',')}
         `
     }
 
@@ -1618,7 +1616,7 @@
 
     if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) {
       _sql = _sql.replace(/\n\s{8}/ig, '\n')
-      console.log(_sql)
+      console.info(_sql)
     }
 
     return _sql
diff --git a/src/views/billprint/index.jsx b/src/views/billprint/index.jsx
index 0800086..0b7f965 100644
--- a/src/views/billprint/index.jsx
+++ b/src/views/billprint/index.jsx
@@ -264,8 +264,8 @@
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
     if ((options.sysType === 'local' && !window.GLOB.systemType) || window.debugger === true) {
-      _customScript &&  console.log(`${_dataresource ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
-      _dataresource &&  console.log(_dataresource)
+      _customScript &&  console.info(`${_dataresource ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
+      _dataresource &&  console.info(_dataresource)
     }
 
     return {

--
Gitblit v1.8.0