From 0a98c5dab4f2783ff5250cb69715340b40d801bb Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 05 四月 2023 18:23:08 +0800
Subject: [PATCH] 2023-04-05

---
 src/tabviews/custom/components/card/cardcellList/index.jsx       |   31 ++
 src/menu/components/card/double-data-card/options.jsx            |   11 
 src/mob/colorsketch/index.jsx                                    |   19 
 src/menu/components/card/doublecardcomponent/options.jsx         |   11 
 src/tabviews/custom/components/card/double-data-card/index.scss  |   19 +
 src/menu/components/card/cardcellcomponent/index.jsx             |    9 
 src/tabviews/custom/components/card/double-data-card/index.jsx   |  116 ++++----
 src/menu/components/card/cardcellcomponent/index.scss            |  227 +++++++++++++++++
 src/menu/components/card/cardcellcomponent/dragaction/index.jsx  |   16 
 src/menu/components/card/cardcellcomponent/elementform/index.jsx |    6 
 src/menu/components/card/double-data-card/index.jsx              |    2 
 src/menu/components/share/actioncomponent/dragaction/index.jsx   |   12 
 src/menu/components/card/cardsimplecomponent/options.jsx         |   11 
 src/menu/components/card/cardcellcomponent/formconfig.jsx        |   26 +
 src/tabviews/custom/components/card/cardcellList/index.scss      |  224 +++++++++++++++++
 src/menu/components/card/cardcomponent/options.jsx               |   11 
 16 files changed, 663 insertions(+), 88 deletions(-)

diff --git a/src/menu/components/card/cardcellcomponent/dragaction/index.jsx b/src/menu/components/card/cardcellcomponent/dragaction/index.jsx
index fe75c47..41c2326 100644
--- a/src/menu/components/card/cardcellcomponent/dragaction/index.jsx
+++ b/src/menu/components/card/cardcellcomponent/dragaction/index.jsx
@@ -1,6 +1,7 @@
 import React, { useState } from 'react'
 import { useDrop } from 'react-dnd'
 import { is, fromJS } from 'immutable'
+import { message } from 'antd'
 import update from 'immutability-helper'
 
 import Card from './card'
@@ -53,7 +54,6 @@
     }
 
     copycard.uuid = Utils.getuuid()
-    copycard.originCard = card
 
     try {
       delete _val.$srcId
@@ -76,12 +76,18 @@
       oInput.select()
       document.execCommand('Copy')
       document.body.removeChild(oInput)
+      
+      message.success('澶嶅埗鎴愬姛銆�')
+    } else {
+      message.warning('澶嶅埗澶辫触銆�')
     }
 
-    _cards.push(copycard)
-
-    handleList(_cards)
-    handleMenu(copycard)
+    if (card.eleType !== 'button') {
+      _cards.push(copycard)
+  
+      handleList(_cards)
+      handleMenu(copycard)
+    }
   }
 
   const changeStyle = id => {
diff --git a/src/menu/components/card/cardcellcomponent/elementform/index.jsx b/src/menu/components/card/cardcellcomponent/elementform/index.jsx
index 009826c..e21fc1f 100644
--- a/src/menu/components/card/cardcellcomponent/elementform/index.jsx
+++ b/src/menu/components/card/cardcellcomponent/elementform/index.jsx
@@ -15,8 +15,8 @@
 
 const cardTypeOptions = {
   sequence: ['eleType', 'width'],
-  text: ['eleType', 'datatype', 'format', 'width', 'height', 'prefix', 'postfix', 'link', 'anchors', 'noValue', 'bgImage', 'fixStyle', 'copyable'],
-  number: ['eleType', 'datatype', 'width', 'height', 'prefix', 'postfix', 'noValue', 'fixStyle'],
+  text: ['eleType', 'datatype', 'format', 'width', 'height', 'prefix', 'postfix', 'link', 'anchors', 'noValue', 'bgImage', 'fixStyle', 'copyable', 'alignItems'],
+  number: ['eleType', 'datatype', 'width', 'height', 'prefix', 'postfix', 'noValue', 'fixStyle', 'alignItems'],
   picture: ['eleType', 'datatype', 'width', 'lenWidRadio', 'maxWidth', 'link', 'noValue'],
   video: ['eleType', 'datatype', 'width', 'aspectRatio', 'autoPlay', 'loop', 'startTime', 'noValue', 'posterType'],
   icon: ['eleType', 'datatype', 'width', 'tooltip'],
@@ -25,7 +25,7 @@
   barcode: ['eleType', 'datatype', 'width', 'barHeight', 'displayValue', 'interval', 'noValue'],
   qrcode: ['eleType', 'datatype', 'width', 'qrWidth', 'color', 'url', 'noValue'],
   currentDate: ['eleType', 'width', 'dateFormat', 'prefix', 'postfix', 'fixStyle'],
-  formula: ['eleType', 'width', 'height', 'prefix', 'postfix', 'eval', 'formula', 'noValue', 'fixStyle'],
+  formula: ['eleType', 'width', 'height', 'prefix', 'postfix', 'eval', 'formula', 'noValue', 'fixStyle', 'alignItems'],
   color: ['eleType', 'datatype', 'width', 'lenWidRadio', 'noValue', 'copyable'],
 }
 
diff --git a/src/menu/components/card/cardcellcomponent/formconfig.jsx b/src/menu/components/card/cardcellcomponent/formconfig.jsx
index 01a75b3..76739c9 100644
--- a/src/menu/components/card/cardcellcomponent/formconfig.jsx
+++ b/src/menu/components/card/cardcellcomponent/formconfig.jsx
@@ -43,6 +43,11 @@
     tooltip = '鍦ㄦ墿灞曞崱鐗囦腑锛屽姩鎬佹暟鎹樉绀哄�间负鑾峰彇鍒扮殑绗竴琛屾暟鎹��'
   }
 
+  let width = card.width || 12
+  if (/x/.test(card.width)) {
+    width = +width.replace(/x/, '.5')
+  }
+
   let forms = [
     {
       type: 'select',
@@ -328,12 +333,12 @@
     {
       type: 'number',
       key: 'width',
-      min: 1,
+      min: 0.5,
       max: 24,
-      precision: 0,
+      precision: 1,
       label: '鍏冪礌瀹藉害',
-      initVal: card.width || 12,
-      tooltip: '鏍呮牸甯冨眬锛屾瘡琛岀瓑鍒嗕负24鍒椼��',
+      initVal: width,
+      tooltip: '鏍呮牸甯冨眬锛屾瘡琛岀瓑鍒嗕负24鍒楋紝鍙缃崐鍒楀嵆.5銆�',
       required: true
     },
     {
@@ -570,6 +575,19 @@
     },
     {
       type: 'radio',
+      key: 'alignItems',
+      label: '鍨傜洿瀵归綈',
+      initVal: card.alignItems || '',
+      tooltip: '鍨傜洿鏂瑰悜鐨勫榻愭柟寮忋��',
+      required: false,
+      options: [
+        { value: '', text: '灞呬笂' },
+        { value: 'center', text: '灞呬腑' },
+        { value: 'end', text: '灞呬笅' }
+      ]
+    },
+    {
+      type: 'radio',
       key: 'fixStyle',
       label: '鍓嶅悗缂�',
       initVal: card.fixStyle || '',
diff --git a/src/menu/components/card/cardcellcomponent/index.jsx b/src/menu/components/card/cardcellcomponent/index.jsx
index 9909995..7826ab9 100644
--- a/src/menu/components/card/cardcellcomponent/index.jsx
+++ b/src/menu/components/card/cardcellcomponent/index.jsx
@@ -361,6 +361,13 @@
     const { elements } = this.state
 
     this.elementFormRef.handleConfirm().then(res => {
+      if (res.width % 0.5) {
+        res.width = parseInt(res.width / 0.5) * 0.5
+      }
+      if (res.width % 1) {
+        res.width = (res.width + '').replace(/.5/, 'x')
+      }
+
       let _elements = elements.map(cell => {
         if (cell.uuid === res.uuid) {
           res.style = cell.style || {}
@@ -744,7 +751,7 @@
     const { elements, visible, actvisible, profVisible, card, record } = this.state
 
     return (
-      <div className="model-menu-card-cell-list">
+      <div className={'model-menu-card-cell-list ' + (cardCell && cardCell.setting.layout === 'flex' ? 'mk-flex' : '') }>
         <DragElement
           list={elements}
           parent={cardCell}
diff --git a/src/menu/components/card/cardcellcomponent/index.scss b/src/menu/components/card/cardcellcomponent/index.scss
index bd6033c..c8d9688 100644
--- a/src/menu/components/card/cardcellcomponent/index.scss
+++ b/src/menu/components/card/cardcellcomponent/index.scss
@@ -43,4 +43,231 @@
   .card-cell:hover, .card-button-cell:hover {
     box-shadow: 0px 0px 2px #1890ff;
   }
+  .card-detail-row {
+    .ant-col[class*="x"] {
+      float: left;
+      box-sizing: border-box;
+    }
+    >.ant-col-0x {
+      width: 2.08333333%;
+    }
+    >.ant-col-1x {
+      width: 6.25%;
+    }
+    >.ant-col-2x {
+      width: 10.41666667%;
+    }
+    >.ant-col-3x {
+      width: 14.58333333%;
+    }
+    >.ant-col-4x {
+      width: 18.75%;
+    }
+    >.ant-col-5x {
+      width: 22.91666667%;
+    }
+    >.ant-col-6x {
+      width: 27.08333333%;
+    }
+    >.ant-col-7x {
+      width: 31.25%;
+    }
+    >.ant-col-8x {
+      width: 35.41666667%;
+    }
+    >.ant-col-9x {
+      width: 39.58333333%;
+    }
+    >.ant-col-10x {
+      width: 43.75%;
+    }
+    >.ant-col-11x {
+      width: 47.91666667%;
+    }
+    >.ant-col-12x {
+      width: 52.08333333%;
+    }
+    >.ant-col-13x {
+      width: 56.25%;
+    }
+    >.ant-col-14x {
+      width: 60.41666667%;
+    }
+    >.ant-col-15x {
+      width: 64.58333333%;
+    }
+    >.ant-col-16x {
+      width: 68.75%;
+    }
+    >.ant-col-17x {
+      width: 72.91666667%;
+    }
+    >.ant-col-18x {
+      width: 77.08333333%;
+    }
+    >.ant-col-19x {
+      width: 81.25%;
+    }
+    >.ant-col-20x {
+      width: 85.41666667%;
+    }
+    >.ant-col-21x {
+      width: 89.58333333%;
+    }
+    >.ant-col-22x {
+      width: 93.75%;
+    }
+    >.ant-col-23x {
+      width: 97.91666667%;
+    }
+  }
+}
+.model-menu-card-cell-list.mk-flex {
+  >.card-detail-row {
+    display: flex;
+    >.ant-col-1 {
+      flex: 1;
+    }
+    >.ant-col-2 {
+      flex: 2;
+    }
+    >.ant-col-3 {
+      flex: 3;
+    }
+    >.ant-col-4 {
+      flex: 4;
+    }
+    >.ant-col-5 {
+      flex: 5;
+    }
+    >.ant-col-6 {
+      flex: 6;
+    }
+    >.ant-col-7 {
+      flex: 7;
+    }
+    >.ant-col-8 {
+      flex: 8;
+    }
+    >.ant-col-9 {
+      flex: 9;
+    }
+    >.ant-col-10 {
+      flex: 10;
+    }
+    >.ant-col-11 {
+      flex: 11;
+    }
+    >.ant-col-12 {
+      flex: 12;
+    }
+    >.ant-col-13 {
+      flex: 13;
+    }
+    >.ant-col-14 {
+      flex: 14;
+    }
+    >.ant-col-15 {
+      flex: 15;
+    }
+    >.ant-col-16 {
+      flex: 16;
+    }
+    >.ant-col-17 {
+      flex: 17;
+    }
+    >.ant-col-18 {
+      flex: 18;
+    }
+    >.ant-col-19 {
+      flex: 19;
+    }
+    >.ant-col-20 {
+      flex: 20;
+    }
+    >.ant-col-21 {
+      flex: 21;
+    }
+    >.ant-col-22 {
+      flex: 22;
+    }
+    >.ant-col-23 {
+      flex: 23;
+    }
+    >.ant-col-24 {
+      flex: 24;
+    }
+    >.ant-col-0x {
+      flex: 0.5;
+    }
+    >.ant-col-1x {
+      flex: 1.5;
+    }
+    >.ant-col-2x {
+      flex: 2.5;
+    }
+    >.ant-col-3x {
+      flex: 3.5;
+    }
+    >.ant-col-4x {
+      flex: 4.5;
+    }
+    >.ant-col-5x {
+      flex: 5.5;
+    }
+    >.ant-col-6x {
+      flex: 6.5;
+    }
+    >.ant-col-7x {
+      flex: 7.5;
+    }
+    >.ant-col-8x {
+      flex: 8.5;
+    }
+    >.ant-col-9x {
+      flex: 9.5;
+    }
+    >.ant-col-10x {
+      flex: 10.5;
+    }
+    >.ant-col-11x {
+      flex: 11.5;
+    }
+    >.ant-col-12x {
+      flex: 12.5;
+    }
+    >.ant-col-13x {
+      flex: 13.5;
+    }
+    >.ant-col-14x {
+      flex: 14.5;
+    }
+    >.ant-col-15x {
+      flex: 15.5;
+    }
+    >.ant-col-16x {
+      flex: 16.5;
+    }
+    >.ant-col-17x {
+      flex: 17.5;
+    }
+    >.ant-col-18x {
+      flex: 18.5;
+    }
+    >.ant-col-19x {
+      flex: 19.5;
+    }
+    >.ant-col-20x {
+      flex: 20.5;
+    }
+    >.ant-col-21x {
+      flex: 21.5;
+    }
+    >.ant-col-22x {
+      flex: 22.5;
+    }
+    >.ant-col-23x {
+      flex: 23.5;
+    }
+  }
 }
\ No newline at end of file
diff --git a/src/menu/components/card/cardcomponent/options.jsx b/src/menu/components/card/cardcomponent/options.jsx
index 02d46f2..32a1632 100644
--- a/src/menu/components/card/cardcomponent/options.jsx
+++ b/src/menu/components/card/cardcomponent/options.jsx
@@ -214,6 +214,17 @@
     },
     {
       type: 'radio',
+      field: 'layout',
+      label: '鍏冪礌甯冨眬',
+      initval: setting.layout || 'grid',
+      required: false,
+      options: [
+        {value: 'grid', label: '鏍呮牸甯冨眬'},
+        {value: 'flex', label: '寮规�у竷灞�'},
+      ]
+    },
+    {
+      type: 'radio',
       field: 'clickType',
       label: '瑙﹀彂鏂瑰紡',
       initval: setting.clickType || 'normal',
diff --git a/src/menu/components/card/cardsimplecomponent/options.jsx b/src/menu/components/card/cardsimplecomponent/options.jsx
index 06b6740..f6ca23b 100644
--- a/src/menu/components/card/cardsimplecomponent/options.jsx
+++ b/src/menu/components/card/cardsimplecomponent/options.jsx
@@ -218,6 +218,17 @@
     },
     {
       type: 'radio',
+      field: 'layout',
+      label: '鍏冪礌甯冨眬',
+      initval: setting.layout || 'grid',
+      required: false,
+      options: [
+        {value: 'grid', label: '鏍呮牸甯冨眬'},
+        {value: 'flex', label: '寮规�у竷灞�'},
+      ]
+    },
+    {
+      type: 'radio',
       field: 'click',
       label: '鐐瑰嚮浜嬩欢',
       initval: setting.click || '',
diff --git a/src/menu/components/card/double-data-card/index.jsx b/src/menu/components/card/double-data-card/index.jsx
index 25728f6..30a4940 100644
--- a/src/menu/components/card/double-data-card/index.jsx
+++ b/src/menu/components/card/double-data-card/index.jsx
@@ -602,7 +602,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={800} update={this.updateWrap} getForms={this.getWrapForms}>
               <EditOutlined style={{color: '#1890ff'}} title="缂栬緫"/>
             </NormalForm>
             <CopyComponent type="datacard" card={card}/>
diff --git a/src/menu/components/card/double-data-card/options.jsx b/src/menu/components/card/double-data-card/options.jsx
index 704da63..235adfa 100644
--- a/src/menu/components/card/double-data-card/options.jsx
+++ b/src/menu/components/card/double-data-card/options.jsx
@@ -199,6 +199,17 @@
       required: false
     },
     {
+      type: 'number',
+      field: 'minWidth',
+      label: '鏈�灏忓搴�',
+      min: 0,
+      max: 5000,
+      precision: 0,
+      initval: wrap.minWidth,
+      tooltip: '璁剧疆鍗$墖鍖哄煙鐨勬渶灏忓搴︼紝鏄剧ず鍖哄煙灏忎簬姝ゅ�煎皢鍑虹幇妯悜婊氬姩銆�',
+      required: false
+    },
+    {
       type: 'radio',
       field: 'permission',
       label: '鏉冮檺楠岃瘉',
diff --git a/src/menu/components/card/doublecardcomponent/options.jsx b/src/menu/components/card/doublecardcomponent/options.jsx
index 38a169d..dfdd703 100644
--- a/src/menu/components/card/doublecardcomponent/options.jsx
+++ b/src/menu/components/card/doublecardcomponent/options.jsx
@@ -165,6 +165,17 @@
     },
     {
       type: 'radio',
+      field: 'layout',
+      label: '鍏冪礌甯冨眬',
+      initval: setting.layout || 'grid',
+      required: false,
+      options: [
+        {value: 'grid', label: '鏍呮牸甯冨眬'},
+        {value: 'flex', label: '寮规�у竷灞�'},
+      ]
+    },
+    {
+      type: 'radio',
       field: 'clickType',
       label: '瑙﹀彂鏂瑰紡',
       initval: setting.clickType || 'normal',
diff --git a/src/menu/components/share/actioncomponent/dragaction/index.jsx b/src/menu/components/share/actioncomponent/dragaction/index.jsx
index e7ed384..cab1425 100644
--- a/src/menu/components/share/actioncomponent/dragaction/index.jsx
+++ b/src/menu/components/share/actioncomponent/dragaction/index.jsx
@@ -1,6 +1,7 @@
 import React, { useState } from 'react'
 import { useDrop } from 'react-dnd'
 import { is, fromJS } from 'immutable'
+import { message } from 'antd'
 import update from 'immutability-helper'
 
 import Utils from '@/utils/utils.js'
@@ -69,7 +70,6 @@
     }
 
     copycard.uuid = Utils.getuuid()
-    copycard.originCard = card
 
     try {
       delete _val.$srcId
@@ -92,13 +92,17 @@
       oInput.select()
       document.execCommand('Copy')
       document.body.removeChild(oInput)
+
+      message.success('澶嶅埗鎴愬姛銆�')
+    } else {
+      message.warning('澶嶅埗澶辫触銆�')
     }
 
-    const { index: overIndex } = findCard(id)
+    // const { index: overIndex } = findCard(id)
 
-    const _cards = update(cards, { $splice: [[overIndex + 1, 0, copycard]] })
+    // const _cards = update(cards, { $splice: [[overIndex + 1, 0, copycard]] })
 
-    handleList(_cards, copycard)
+    // handleList(_cards, copycard)
   }
 
   const [, drop] = useDrop({
diff --git a/src/mob/colorsketch/index.jsx b/src/mob/colorsketch/index.jsx
index 58c6d9b..65c7df6 100644
--- a/src/mob/colorsketch/index.jsx
+++ b/src/mob/colorsketch/index.jsx
@@ -50,10 +50,10 @@
       }
       
       normal_colors.forEach(item => {
-        if (!colors.includes(item)) {
-          colors.push(item)
-        }
+        colors.push({color: item, title: '甯哥敤鑹诧細' + item})
       })
+    } else {
+      normal_colors = []
     }
 
     if (_colors) {
@@ -64,15 +64,15 @@
       }
       
       _colors.forEach(item => {
-        if (!colors.includes(item.linkurl)) {
-          colors.push(item.linkurl)
-        }
+        if (normal_colors.includes(item.linkurl)) return
+        
+        colors.push({color: item.linkurl, title: '绯荤粺鑹诧細' + item.linkurl})
       })
     }
 
     if (colors.length < 40) {
       for (let i = colors.length; i < 40; i++) {
-        colors.push('transparent')
+        colors.push({color: 'transparent', title: '' + i})
       }
     }
 
@@ -102,8 +102,8 @@
 
   onVisibleChange = (status) => {
     const { initVal, color } = this.state
-
-    if (!status && color && color !== initVal) {
+    
+    if (!status && color && color !== initVal && color !== 'rgba(0, 0, 0, 0)' && color !== 'transparent' && !/rgba\(\d+,\s*\d+,\s*\d+,\s*0\)/.test(color)) {
       let normal_colors = localStorage.getItem(_href + 'normal_colors')
 
       if (normal_colors) {
@@ -117,6 +117,7 @@
       }
 
       normal_colors.unshift(color)
+      normal_colors = Array.from(new Set(normal_colors))
 
       if (normal_colors.length > 10) {
         normal_colors.length = 10
diff --git a/src/tabviews/custom/components/card/cardcellList/index.jsx b/src/tabviews/custom/components/card/cardcellList/index.jsx
index 89cfeaa..979f07b 100644
--- a/src/tabviews/custom/components/card/cardcellList/index.jsx
+++ b/src/tabviews/custom/components/card/cardcellList/index.jsx
@@ -400,11 +400,18 @@
         if (card.bgImage && data[card.bgImage]) {
           _style.backgroundImage = `url('${data[card.bgImage]}')`
         }
+
+        let lineStyle = {height: card.innerHeight || 'auto'}
+        if (card.alignItems) {
+          lineStyle.display = 'flex'
+          lineStyle.alignItems = card.alignItems
+          lineStyle.justifyContent = _style.textAlign || 'left'
+        }
   
         contents.push(
           <Col key={card.uuid} style={_style_} span={card.width}>
             <div style={_style} onClick={(e) => {this.openNewView(e, card)}}>
-              <div className={'ant-mk-text line' + (card.height || '') + className} style={{height: card.innerHeight || 'auto'}}>{val}</div>
+              <div className={'ant-mk-text line' + (card.height || '') + className} style={lineStyle}>{val}</div>
             </div>
           </Col>
         )
@@ -470,11 +477,18 @@
           }
           className = mark.signType
         }
+
+        let lineStyle = {height: card.innerHeight || 'auto'}
+        if (card.alignItems) {
+          lineStyle.display = 'flex'
+          lineStyle.alignItems = card.alignItems
+          lineStyle.justifyContent = _style.textAlign || 'left'
+        }
   
         contents.push(
           <Col key={card.uuid} style={_style_} span={card.width}>
             <div style={_style}>
-              <div className={'ant-mk-text line' + (card.height || '') + className} style={{height: card.innerHeight || 'auto'}}>{val}</div>
+              <div className={'ant-mk-text line' + (card.height || '') + className} style={lineStyle}>{val}</div>
             </div>
           </Col>
         )
@@ -789,11 +803,18 @@
           }
           className = mark.signType
         }
+
+        let lineStyle = {height: card.innerHeight || 'auto'}
+        if (card.alignItems) {
+          lineStyle.display = 'flex'
+          lineStyle.alignItems = card.alignItems
+          lineStyle.justifyContent = _style.textAlign || 'left'
+        }
   
         contents.push(
           <Col key={card.uuid} style={_style_} span={card.width}>
             <div style={_style}>
-              <div className={'ant-mk-text line' + (card.height || '') + className} style={{height: card.innerHeight || 'auto'}}>{val}</div>
+              <div className={'ant-mk-text line' + (card.height || '') + className} style={lineStyle}>{val}</div>
             </div>
           </Col>
         )
@@ -996,8 +1017,10 @@
   }
 
   render() {
+    const { cardCell } = this.props
+    
     return (
-      <div className="card-cell-list">
+      <div className={'card-cell-list ' + (cardCell && cardCell.setting.layout === 'flex' ? 'mk-flex' : '')}>
         {this.getContent()}
       </div>
     )
diff --git a/src/tabviews/custom/components/card/cardcellList/index.scss b/src/tabviews/custom/components/card/cardcellList/index.scss
index 2ce260c..4fc1ddf 100644
--- a/src/tabviews/custom/components/card/cardcellList/index.scss
+++ b/src/tabviews/custom/components/card/cardcellList/index.scss
@@ -193,9 +193,233 @@
     width: 26px;
     height: 26px;
   }
+
+  .ant-col[class*="x"] {
+    float: left;
+    box-sizing: border-box;
+  }
+  >.ant-col-0x {
+    width: 2.08333333%;
+  }
+  >.ant-col-1x {
+    width: 6.25%;
+  }
+  >.ant-col-2x {
+    width: 10.41666667%;
+  }
+  >.ant-col-3x {
+    width: 14.58333333%;
+  }
+  >.ant-col-4x {
+    width: 18.75%;
+  }
+  >.ant-col-5x {
+    width: 22.91666667%;
+  }
+  >.ant-col-6x {
+    width: 27.08333333%;
+  }
+  >.ant-col-7x {
+    width: 31.25%;
+  }
+  >.ant-col-8x {
+    width: 35.41666667%;
+  }
+  >.ant-col-9x {
+    width: 39.58333333%;
+  }
+  >.ant-col-10x {
+    width: 43.75%;
+  }
+  >.ant-col-11x {
+    width: 47.91666667%;
+  }
+  >.ant-col-12x {
+    width: 52.08333333%;
+  }
+  >.ant-col-13x {
+    width: 56.25%;
+  }
+  >.ant-col-14x {
+    width: 60.41666667%;
+  }
+  >.ant-col-15x {
+    width: 64.58333333%;
+  }
+  >.ant-col-16x {
+    width: 68.75%;
+  }
+  >.ant-col-17x {
+    width: 72.91666667%;
+  }
+  >.ant-col-18x {
+    width: 77.08333333%;
+  }
+  >.ant-col-19x {
+    width: 81.25%;
+  }
+  >.ant-col-20x {
+    width: 85.41666667%;
+  }
+  >.ant-col-21x {
+    width: 89.58333333%;
+  }
+  >.ant-col-22x {
+    width: 93.75%;
+  }
+  >.ant-col-23x {
+    width: 97.91666667%;
+  }
 }
 .card-cell-list::after {
   content: ' ';
   display: block;
   clear: both;
+}
+.card-cell-list.mk-flex {
+  display: flex;
+  >.ant-col-1 {
+    flex: 1;
+  }
+  >.ant-col-2 {
+    flex: 2;
+  }
+  >.ant-col-3 {
+    flex: 3;
+  }
+  >.ant-col-4 {
+    flex: 4;
+  }
+  >.ant-col-5 {
+    flex: 5;
+  }
+  >.ant-col-6 {
+    flex: 6;
+  }
+  >.ant-col-7 {
+    flex: 7;
+  }
+  >.ant-col-8 {
+    flex: 8;
+  }
+  >.ant-col-9 {
+    flex: 9;
+  }
+  >.ant-col-10 {
+    flex: 10;
+  }
+  >.ant-col-11 {
+    flex: 11;
+  }
+  >.ant-col-12 {
+    flex: 12;
+  }
+  >.ant-col-13 {
+    flex: 13;
+  }
+  >.ant-col-14 {
+    flex: 14;
+  }
+  >.ant-col-15 {
+    flex: 15;
+  }
+  >.ant-col-16 {
+    flex: 16;
+  }
+  >.ant-col-17 {
+    flex: 17;
+  }
+  >.ant-col-18 {
+    flex: 18;
+  }
+  >.ant-col-19 {
+    flex: 19;
+  }
+  >.ant-col-20 {
+    flex: 20;
+  }
+  >.ant-col-21 {
+    flex: 21;
+  }
+  >.ant-col-22 {
+    flex: 22;
+  }
+  >.ant-col-23 {
+    flex: 23;
+  }
+  >.ant-col-24 {
+    flex: 24;
+  }
+  >.ant-col-0x {
+    flex: 0.5;
+  }
+  >.ant-col-1x {
+    flex: 1.5;
+  }
+  >.ant-col-2x {
+    flex: 2.5;
+  }
+  >.ant-col-3x {
+    flex: 3.5;
+  }
+  >.ant-col-4x {
+    flex: 4.5;
+  }
+  >.ant-col-5x {
+    flex: 5.5;
+  }
+  >.ant-col-6x {
+    flex: 6.5;
+  }
+  >.ant-col-7x {
+    flex: 7.5;
+  }
+  >.ant-col-8x {
+    flex: 8.5;
+  }
+  >.ant-col-9x {
+    flex: 9.5;
+  }
+  >.ant-col-10x {
+    flex: 10.5;
+  }
+  >.ant-col-11x {
+    flex: 11.5;
+  }
+  >.ant-col-12x {
+    flex: 12.5;
+  }
+  >.ant-col-13x {
+    flex: 13.5;
+  }
+  >.ant-col-14x {
+    flex: 14.5;
+  }
+  >.ant-col-15x {
+    flex: 15.5;
+  }
+  >.ant-col-16x {
+    flex: 16.5;
+  }
+  >.ant-col-17x {
+    flex: 17.5;
+  }
+  >.ant-col-18x {
+    flex: 18.5;
+  }
+  >.ant-col-19x {
+    flex: 19.5;
+  }
+  >.ant-col-20x {
+    flex: 20.5;
+  }
+  >.ant-col-21x {
+    flex: 21.5;
+  }
+  >.ant-col-22x {
+    flex: 22.5;
+  }
+  >.ant-col-23x {
+    flex: 23.5;
+  }
 }
\ No newline at end of file
diff --git a/src/tabviews/custom/components/card/double-data-card/index.jsx b/src/tabviews/custom/components/card/double-data-card/index.jsx
index e50b913..b06a81c 100644
--- a/src/tabviews/custom/components/card/double-data-card/index.jsx
+++ b/src/tabviews/custom/components/card/double-data-card/index.jsx
@@ -917,64 +917,66 @@
             selectedData={selectedData}
           /> : null
         }
-        <div className={`data-zoom ${config.wrap.wrapClass}`}>
-          <Row className={'card-row-list '}>
-            {precards.map((item, index) => (
-              <Col key={'pre' + index} className="extend-card" span={item.setting.width || 6}>
-                <CardItem card={item} cards={config} data={extendData}>
-                  {item.setting.checkAll === 'show' ? <span onClick={this.checkAll} className={'circle-select' + checkAll}></span> : null}
-                </CardItem>
-              </Col>
-            ))}
-            {data && data.map((item, index) => {
-              let className = 'card-item-wrap mk-card ' + mainBox
-              let subClass = 'mk-unfold'
-              let unfold = true
-
-              if (item.$disabled) {
-                className = 'mk-disabled ' + mainBox
-              } else if (activeKey === index) {
-                className += 'active'
-              } else if (selectKeys.indexOf(index) > -1) {
-                className += 'selected'
-              }
-
-              if (card.setting.display !== 'default') {
-                if (item.children.length === 0) {
-                  subClass = 'mk-disabled'
-                  unfold = false
-                } else {
-                  subClass = opens.indexOf(index) > -1 ? 'mk-unfold' : 'mk-collapse'
-                  unfold = opens.indexOf(index) > -1
-                }
-              }
-
-              return (
-                <Col key={index} span={card.setting.width}>
-                  <div className={className} style={wrapStyle}>
-                    <CardItem card={card} cards={config} data={item} onDoubleClick={() => this.onDoubleClick(index, subClass)} onClick={() => {this.changeCard(index, item, subClass)}}>
-                      <span className="circle-select"></span>
-                      {card.setting.controlIcon === 'left' ? (!unfold ? <PlusSquareOutlined className={subClass} onClick={(e) => this.changeUnfold(e, index, subClass)}/> : <MinusSquareOutlined className={subClass} onClick={(e) => this.changeUnfold(e, index, subClass)}/>) : null}
-                      {card.setting.controlIcon === 'right' ? <UpOutlined className={subClass} onClick={(e) => this.changeUnfold(e, index, subClass)}/> : null}
-                    </CardItem>
-                    <div className={'sub-card-wrap ' + subClass + (config.wrap.parity === 'true' ? ' mk-parity-bg' : '')}>
-                      {item.children.map((cell, index) => <Col key={'sub' + index} span={subcard.setting.width || 24}>
-                        <CardItem card={subcard} cards={subconfig} data={cell} />
-                      </Col>)}
-                    </div>
-                  </div>
+        <div className={config.wrap.minWidth ? 'data-zoom-box' : ''}>
+          <div className={`data-zoom ${config.wrap.wrapClass}`} style={config.wrap.minWidth ? {minWidth: config.wrap.minWidth} : null}>
+            <Row className={'card-row-list '}>
+              {precards.map((item, index) => (
+                <Col key={'pre' + index} className="extend-card" span={item.setting.width || 6}>
+                  <CardItem card={item} cards={config} data={extendData}>
+                    {item.setting.checkAll === 'show' ? <span onClick={this.checkAll} className={'circle-select' + checkAll}></span> : null}
+                  </CardItem>
                 </Col>
-              )
-            })}
-            {nextcards.map((item, index) => (
-              <Col key={'next' + index} className="extend-card" span={item.setting.width || 6}>
-                <CardItem card={item} cards={config} data={extendData}>
-                  {item.setting.checkAll === 'show' ? <span onClick={this.checkAll} className={'circle-select' + checkAll}></span> : null}
-                </CardItem>
-              </Col>
-            ))}
-          </Row>
-          {precards.length === 0 && nextcards.length === 0 && (!data || data.length === 0) ? <Empty description={false}/> : null}
+              ))}
+              {data && data.map((item, index) => {
+                let className = 'card-item-wrap mk-card ' + mainBox
+                let subClass = 'mk-unfold'
+                let unfold = true
+
+                if (item.$disabled) {
+                  className = 'mk-disabled ' + mainBox
+                } else if (activeKey === index) {
+                  className += 'active'
+                } else if (selectKeys.indexOf(index) > -1) {
+                  className += 'selected'
+                }
+
+                if (card.setting.display !== 'default') {
+                  if (item.children.length === 0) {
+                    subClass = 'mk-disabled'
+                    unfold = false
+                  } else {
+                    subClass = opens.indexOf(index) > -1 ? 'mk-unfold' : 'mk-collapse'
+                    unfold = opens.indexOf(index) > -1
+                  }
+                }
+
+                return (
+                  <Col key={index} span={card.setting.width}>
+                    <div className={className} style={wrapStyle}>
+                      <CardItem card={card} cards={config} data={item} onDoubleClick={() => this.onDoubleClick(index, subClass)} onClick={() => {this.changeCard(index, item, subClass)}}>
+                        <span className="circle-select"></span>
+                        {card.setting.controlIcon === 'left' ? (!unfold ? <PlusSquareOutlined className={subClass} onClick={(e) => this.changeUnfold(e, index, subClass)}/> : <MinusSquareOutlined className={subClass} onClick={(e) => this.changeUnfold(e, index, subClass)}/>) : null}
+                        {card.setting.controlIcon === 'right' ? <UpOutlined className={subClass} onClick={(e) => this.changeUnfold(e, index, subClass)}/> : null}
+                      </CardItem>
+                      <div className={'sub-card-wrap ' + subClass + (config.wrap.parity === 'true' ? ' mk-parity-bg' : '')}>
+                        {item.children.map((cell, index) => <Col key={'sub' + index} span={subcard.setting.width || 24}>
+                          <CardItem card={subcard} cards={subconfig} data={cell} />
+                        </Col>)}
+                      </div>
+                    </div>
+                  </Col>
+                )
+              })}
+              {nextcards.map((item, index) => (
+                <Col key={'next' + index} className="extend-card" span={item.setting.width || 6}>
+                  <CardItem card={item} cards={config} data={extendData}>
+                    {item.setting.checkAll === 'show' ? <span onClick={this.checkAll} className={'circle-select' + checkAll}></span> : null}
+                  </CardItem>
+                </Col>
+              ))}
+            </Row>
+            {precards.length === 0 && nextcards.length === 0 && (!data || data.length === 0) ? <Empty description={false}/> : null}
+          </div>
         </div>
         {config.wrap.pagestyle === 'page' && config.setting.laypage && data ? <Pagination size="small" total={total} showTotal={(t, range) => `${range[0]}-${range[1]} 鍏� ${total} 鏉} pageSize={pageSize} showSizeChanger={true} pageSizeOptions={this.state.pageOptions} onChange={this.changePageIndex} onShowSizeChange={this.pageSizeChange} current={pageIndex}/> : null}
         {config.wrap.pagestyle === 'more' && config.setting.laypage && data && data.length > 0 ? <div className={'mk-more' + (pageSize * pageIndex >= total ? ' disabled' : '')} onClick={this.loadMore}>鏌ョ湅鏇村<DownOutlined/></div> : null}
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 d19f2f3..9ca06c2 100644
--- a/src/tabviews/custom/components/card/double-data-card/index.scss
+++ b/src/tabviews/custom/components/card/double-data-card/index.scss
@@ -297,6 +297,25 @@
       }
     }
   }
+  .data-zoom-box {
+    width: 100%;
+    overflow-x: auto;
+    padding-bottom: 10px;
+  }
+  .data-zoom-box::-webkit-scrollbar {
+    height: 7px;
+  }
+  .data-zoom-box::-webkit-scrollbar-thumb {
+    border-radius: 5px;
+    box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.13);
+    background: rgba(0, 0, 0, 0.13);
+  }
+  .data-zoom-box::-webkit-scrollbar-track {
+    box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05);
+    border-radius: 3px;
+    border: 1px solid rgba(0, 0, 0, 0.07);
+    background: rgba(0, 0, 0, 0);
+  }
 }
 .double-data-card-box::-webkit-scrollbar {
   width: 7px;

--
Gitblit v1.8.0