From 6dea6877f825d8b69bd1f0a9e127c8a03ec374be Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 29 三月 2024 23:15:06 +0800
Subject: [PATCH] 2024-03-29

---
 src/index.js                                                 |    6 +-
 src/tabviews/custom/popview/index.jsx                        |    4 -
 src/tabviews/custom/index.jsx                                |    4 -
 src/tabviews/custom/components/share/tabtransfer/index.jsx   |    4 -
 src/tabviews/custom/components/group/normal-group/index.jsx  |   30 ++++++++++-----
 src/menu/components/group/normal-group/options.jsx           |   12 ++++++
 src/tabviews/custom/components/group/normal-group/index.scss |   55 +++++++++++++++++++++++++++
 7 files changed, 93 insertions(+), 22 deletions(-)

diff --git a/src/index.js b/src/index.js
index deb6444..378e09d 100644
--- a/src/index.js
+++ b/src/index.js
@@ -78,6 +78,9 @@
     if (config.probation && /^20\d{2}-\d{2}-\d{2}$/.test(config.probation) && new Date(config.probation).getTime() > new Date().getTime()) {
       GLOB.probation = true
     }
+    if (config.forcedUpdate && /^20\d{2}-\d{2}-\d{2}$/.test(config.forcedUpdate) && new Date(config.forcedUpdate).getTime() > new Date().getTime()) {
+      GLOB.forcedUpdate = true
+    }
 
     // 鍙湁涓氬姟绯荤粺鎵嶅彲浠ヨ缃负姝e紡绯荤粺
     if (GLOB.sysType === 'local' && (config.systemType === 'official' || config.systemType === 'production')) {
@@ -93,9 +96,6 @@
       }
 
       GLOB.systemType = 'production'
-      if (config.forcedUpdate && /^20\d{2}-\d{2}-\d{2}$/.test(config.forcedUpdate) && new Date(config.forcedUpdate).getTime() > new Date().getTime()) {
-        GLOB.forcedUpdate = true
-      }
     } else if (GLOB.sysType === 'local') {
       GLOB.probation = true
       GLOB.debugger = true
diff --git a/src/menu/components/group/normal-group/options.jsx b/src/menu/components/group/normal-group/options.jsx
index 8b4c290..9829b7f 100644
--- a/src/menu/components/group/normal-group/options.jsx
+++ b/src/menu/components/group/normal-group/options.jsx
@@ -122,6 +122,18 @@
       ]
     },
     {
+      type: 'radio',
+      field: 'mergeAble',
+      label: '灞曞紑/鏀惰捣',
+      initval: setting.mergeAble || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ],
+      forbid: appType === 'mob'
+    },
+    {
       type: 'multiselect',
       field: 'blacklist',
       label: '榛戝悕鍗�',
diff --git a/src/tabviews/custom/components/group/normal-group/index.jsx b/src/tabviews/custom/components/group/normal-group/index.jsx
index 5a87122..512b48e 100644
--- a/src/tabviews/custom/components/group/normal-group/index.jsx
+++ b/src/tabviews/custom/components/group/normal-group/index.jsx
@@ -1,5 +1,6 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
+import { DoubleLeftOutlined, DoubleRightOutlined } from '@ant-design/icons'
 
 import asyncComponent from '@/utils/asyncComponent'
 import './index.scss'
@@ -8,23 +9,32 @@
 
 class NormalGroup extends Component {
   static propTpyes = {
-    config: PropTypes.object,        // 缁勪欢閰嶇疆淇℃伅
+    config: PropTypes.object
   }
 
-  state = {}
+  state = {
+    visible: true,
+    mergeAble: this.props.config.setting.mergeAble === 'true'
+  }
 
   render() {
-    const { config } = this.props
+    const { config, style } = this.props
+    const { visible, mergeAble } = this.state
 
-    if (config.components.length === 0) return (<div style={config.style}></div>)
+    if (config.components.length === 0) return (<div className={'ant-col ant-col-' + config.width} style={style}><div style={config.style}></div></div>)
     
     return (
-      <div className={'normal-group-wrap ' + (config.setting.layout || '')} id={'anchor' + config.uuid} style={config.style}>
-        {config.setting && config.setting.title ? <div className="group-header" style={config.headerStyle}>
-          <span className="title">{config.setting.title}</span>
-        </div> : null}
-        <TabTransfer config={config}/>
-        {/* <Row className="component-wrap">{this.getComponents()}</Row> */}
+      <div className={'ant-col ant-col-' + config.width + (mergeAble ? ' mk-merge-able' : '') + (visible ? '' : ' close')} style={style}>
+        <div className={'normal-group-wrap ' + (config.setting.layout || '')} id={'anchor' + config.uuid} style={config.style}>
+          <div className="mk-control">
+            <DoubleLeftOutlined onClick={() => this.setState({visible: false})}/>
+            <DoubleRightOutlined onClick={() => this.setState({visible: true})}/>
+          </div>
+          {config.setting && config.setting.title ? <div className="group-header" style={config.headerStyle}>
+            <span className="title">{config.setting.title}</span>
+          </div> : null}
+          <TabTransfer config={config}/>
+        </div>
       </div>
     )
   }
diff --git a/src/tabviews/custom/components/group/normal-group/index.scss b/src/tabviews/custom/components/group/normal-group/index.scss
index 3869386..0d6c035 100644
--- a/src/tabviews/custom/components/group/normal-group/index.scss
+++ b/src/tabviews/custom/components/group/normal-group/index.scss
@@ -20,6 +20,21 @@
       z-index: 1;
     }
   }
+
+  .mk-control {
+    display: none;
+    position: absolute;
+    top: 0px;
+    right: -24px;
+    z-index: 2;
+    background: #ffffff;
+    box-shadow: 0px 0px 2px #d8d8d8;
+
+    .anticon {
+      padding: 5px;
+      cursor: pointer;
+    }
+  }
 }
 
 .normal-group-wrap::after {
@@ -37,4 +52,44 @@
       width: 5%;
     }
   }
+}
+
+.mk-merge-able {
+  transition: all 0.2s;
+
+  .normal-group-wrap {
+    position: relative;
+  }
+  .mk-control {
+    display: inline-block;
+
+    .anticon-double-left {
+      display: inline-block;
+    }
+    .anticon-double-right {
+      display: none;
+    }
+  }
+}
+.mk-merge-able + .ant-col {
+  transition: all 0.2s;
+}
+.mk-merge-able.close {
+  width: 0px;
+  .normal-group-wrap {
+    margin: 0!important;
+  }
+  .mk-control {
+    display: inline-block;
+
+    .anticon-double-left {
+      display: none;
+    }
+    .anticon-double-right {
+      display: inline-block;
+    }
+  }
+}
+.mk-merge-able.close + .ant-col {
+  width: 100%;
 }
\ No newline at end of file
diff --git a/src/tabviews/custom/components/share/tabtransfer/index.jsx b/src/tabviews/custom/components/share/tabtransfer/index.jsx
index 2523935..34289a8 100644
--- a/src/tabviews/custom/components/share/tabtransfer/index.jsx
+++ b/src/tabviews/custom/components/share/tabtransfer/index.jsx
@@ -294,9 +294,7 @@
         )
       } else if (item.type === 'group' && item.subtype === 'normalgroup') {
         return (
-          <Col span={item.width} style={style} key={item.uuid}>
-            <NormalGroup config={item}/>
-          </Col>
+          <NormalGroup config={item} style={style} key={item.uuid}/>
         )
       } else if (item.type === 'form' && item.subtype === 'simpleform') {
         return (
diff --git a/src/tabviews/custom/index.jsx b/src/tabviews/custom/index.jsx
index 400b562..4122cd7 100644
--- a/src/tabviews/custom/index.jsx
+++ b/src/tabviews/custom/index.jsx
@@ -1642,9 +1642,7 @@
         )
       } else if (item.type === 'group' && item.subtype === 'normalgroup') {
         return (
-          <Col span={item.width} style={style} key={item.uuid}>
-            <NormalGroup config={item}/>
-          </Col>
+          <NormalGroup config={item} style={style} key={item.uuid}/>
         )
       } else if (item.type === 'editor') {
         return (
diff --git a/src/tabviews/custom/popview/index.jsx b/src/tabviews/custom/popview/index.jsx
index a75db00..83c7cdf 100644
--- a/src/tabviews/custom/popview/index.jsx
+++ b/src/tabviews/custom/popview/index.jsx
@@ -1120,9 +1120,7 @@
         )
       } else if (item.type === 'group' && item.subtype === 'normalgroup') {
         return (
-          <Col span={item.width} style={style} key={item.uuid}>
-            <NormalGroup config={item}/>
-          </Col>
+          <NormalGroup config={item} style={style} key={item.uuid}/>
         )
       } else if (item.type === 'editor') {
         return (

--
Gitblit v1.8.0