From c6f7462d80ab626174329b69045fb7e5704c0683 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期六, 05 六月 2021 22:44:17 +0800
Subject: [PATCH] 2021-06-05

---
 src/menu/components/chart/antv-pie/index.jsx                   |  146 ++++++-----
 src/menu/components/chart/antv-bar/chartcompile/index.jsx      |    2 
 src/menu/components/chart/antv-bar/index.jsx                   |   37 ++
 src/menu/components/chart/antv-bar/chartcompile/formconfig.jsx |  139 ++++++----
 src/mob/colorsketch/index.jsx                                  |   17 
 src/tabviews/custom/components/chart/antv-bar-line/index.jsx   |  186 +++++++++-----
 src/menu/components/chart/antv-pie/chartcompile/formconfig.jsx |   17 +
 src/mob/colorsketch/index.scss                                 |   18 +
 src/tabviews/custom/components/chart/antv-pie/index.jsx        |  177 +++++++------
 9 files changed, 462 insertions(+), 277 deletions(-)

diff --git a/src/menu/components/chart/antv-bar/chartcompile/formconfig.jsx b/src/menu/components/chart/antv-bar/chartcompile/formconfig.jsx
index ae7e6fd..837e853 100644
--- a/src/menu/components/chart/antv-bar/chartcompile/formconfig.jsx
+++ b/src/menu/components/chart/antv-bar/chartcompile/formconfig.jsx
@@ -8,34 +8,34 @@
  * @param {object} card       // 鍥捐〃瀵硅薄
  */
 export function getBaseForm (card) {
-  let appType = sessionStorage.getItem('appType')
-  let menulist = null
+  // let appType = sessionStorage.getItem('appType')
+  // let menulist = null
 
-  if (appType === 'pc') {
-    menulist = sessionStorage.getItem('appMenus')
-    if (Array.isArray(card.linkmenu)) {
-      card.linkmenu = ''
-    }
-  } else {
-    menulist = sessionStorage.getItem('fstMenuList')
-  }
+  // if (appType === 'pc') {
+  //   menulist = sessionStorage.getItem('appMenus')
+  //   if (Array.isArray(card.linkmenu)) {
+  //     card.linkmenu = ''
+  //   }
+  // } else {
+  //   menulist = sessionStorage.getItem('fstMenuList')
+  // }
 
-  if (menulist) {
-    try {
-      menulist = JSON.parse(menulist)
-      if (appType === 'pc') {
-        menulist = menulist.map(item => {
-          item.value = item.MenuID
-          item.text = item.MenuName
-          return item
-        })
-      }
-    } catch {
-      menulist = []
-    }
-  } else {
-    menulist = []
-  }
+  // if (menulist) {
+  //   try {
+  //     menulist = JSON.parse(menulist)
+  //     if (appType === 'pc') {
+  //       menulist = menulist.map(item => {
+  //         item.value = item.MenuID
+  //         item.text = item.MenuName
+  //         return item
+  //       })
+  //     }
+  //   } catch {
+  //     menulist = []
+  //   }
+  // } else {
+  //   menulist = []
+  // }
 
   let roleList = sessionStorage.getItem('sysRoles')
   if (roleList) {
@@ -94,38 +94,38 @@
       required: false,
       options: roleList
     },
-    {
-      type: 'cascader',
-      key: 'linkmenu',
-      label: '鍏宠仈鑿滃崟',
-      initVal: card.linkmenu || [],
-      tooltip: '鍦ㄤ娇鐢ㄦ煴褰㈠浘涓旀湭鍚敤鑷畾涔夎缃椂鏈夋晥銆�',
-      required: false,
-      forbid: appType === 'pc' || appType === 'mob',
-      options: menulist
-    },
-    {
-      type: 'select',
-      key: 'linkmenu',
-      label: '鍏宠仈鑿滃崟',
-      initVal: card.linkmenu || '',
-      tooltip: '鍙屽嚮鏌辩姸鍥撅紝浼氭墦寮�鍏宠仈鐨勮彍鍗曘��',
-      required: false,
-      forbid: appType !== 'pc',
-      options: menulist
-    },
-    {
-      type: 'radio',
-      key: 'open',
-      label: '鎵撳紑鏂瑰紡',
-      initVal: card.open || 'blank',
-      required: false,
-      forbid: appType !== 'pc',
-      options: [
-        { value: 'blank', text: '鏂扮獥鍙�' },
-        { value: 'self', text: '褰撳墠绐楀彛' }
-      ]
-    }
+    // {
+    //   type: 'cascader',
+    //   key: 'linkmenu',
+    //   label: '鍏宠仈鑿滃崟',
+    //   initVal: card.linkmenu || [],
+    //   tooltip: '鍦ㄤ娇鐢ㄦ煴褰㈠浘涓旀湭鍚敤鑷畾涔夎缃椂鏈夋晥銆�',
+    //   required: false,
+    //   forbid: appType === 'pc' || appType === 'mob',
+    //   options: menulist
+    // },
+    // {
+    //   type: 'select',
+    //   key: 'linkmenu',
+    //   label: '鍏宠仈鑿滃崟',
+    //   initVal: card.linkmenu || '',
+    //   tooltip: '鍙屽嚮鏌辩姸鍥撅紝浼氭墦寮�鍏宠仈鐨勮彍鍗曘��',
+    //   required: false,
+    //   forbid: appType !== 'pc',
+    //   options: menulist
+    // },
+    // {
+    //   type: 'radio',
+    //   key: 'open',
+    //   label: '鎵撳紑鏂瑰紡',
+    //   initVal: card.open || 'blank',
+    //   required: false,
+    //   forbid: appType !== 'pc',
+    //   options: [
+    //     { value: 'blank', text: '鏂扮獥鍙�' },
+    //     { value: 'self', text: '褰撳墠绐楀彛' }
+    //   ]
+    // }
   ]
 }
 
@@ -331,6 +331,20 @@
       }]
     }, {
       type: 'radio',
+      key: 'area',
+      label: '闈㈢Н鍥�',
+      initVal: card.area || 'false',
+      required: false,
+      forbid: ['bar'].includes(card.chartType),
+      options: [{
+        value: 'true',
+        text: '鏄剧ず'
+      }, {
+        value: 'false',
+        text: '涓嶆樉绀�'
+      }]
+    }, {
+      type: 'radio',
       key: 'repeat',
       label: '閲嶅鏁版嵁',
       initVal: card.repeat || 'unrepeat',
@@ -388,6 +402,15 @@
       tooltip: '鍧愭爣杞存彁绀烘枃瀛楀強绀轰緥鐨勯鑹层��',
       required: false
     }, {
+      type: 'color',
+      key: 'selectColor',
+      label: '閫変腑棰滆壊',
+      initVal: card.selectColor || '',
+      tooltip: '閫変腑鏌卞舰鍥剧殑棰滆壊锛屽湪浜や簰鏁堟灉銆婂厓绱犻�変腑锛堝閫夛級銆嬪拰銆婂厓绱犻�変腑锛堝崟閫夛級銆嬩腑鏈夋晥锛岃嚜瀹氫箟璁剧疆涓棤鏁堛��',
+      forbid: !['bar'].includes(card.chartType),
+      allowClear: true,
+      required: false
+    }, {
       type: 'select',
       key: 'interaction',
       label: '浜や簰鏁堟灉',
diff --git a/src/menu/components/chart/antv-bar/chartcompile/index.jsx b/src/menu/components/chart/antv-bar/chartcompile/index.jsx
index 0562b38..b46092e 100644
--- a/src/menu/components/chart/antv-bar/chartcompile/index.jsx
+++ b/src/menu/components/chart/antv-bar/chartcompile/index.jsx
@@ -373,7 +373,7 @@
               {getFieldDecorator(item.key, {
                 initialValue: item.initVal
               })(
-                <ColorSketch />
+                <ColorSketch allowClear={item.allowClear} />
               )}
             </Form.Item>
           </Col>
diff --git a/src/menu/components/chart/antv-bar/index.jsx b/src/menu/components/chart/antv-bar/index.jsx
index bea61f9..87789f7 100644
--- a/src/menu/components/chart/antv-bar/index.jsx
+++ b/src/menu/components/chart/antv-bar/index.jsx
@@ -75,7 +75,7 @@
         parentId: card.parentId || '',
         format: 'array',   // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
         pageable: false,   // 缁勪欢灞炴�� - 鏄惁鍙垎椤�
-        switchable: false, // 缁勪欢灞炴�� - 鏁版嵁鏄惁鍙垏鎹�
+        switchable: card.type === 'bar' ? true : false, // 缁勪欢灞炴�� - 鏁版嵁鏄惁鍙垏鎹�
         dataName: card.dataName || '',
         width: _plot.width,
         name: _plot.name,
@@ -348,6 +348,23 @@
           .color('key')
           .size(3)
           .shape('circle')
+      }
+
+      if (plot.area === 'true') {
+        let area = chart.area().shape(plot.shape || 'smooth').position(`${X_axis}*value`).tooltip(false)
+        if (plot.colors && plot.colors.length > 0) {
+          let limit = chartColors.length
+          area.color('key', (key) => {
+            if (colors.has(key)) {
+              return colors.get(key)
+            } else {
+              colorIndex++
+              return chartColors[(colorIndex - 1) % limit]
+            }
+          })
+        } else {
+          area.color('key')
+        }
       }
 
       if (plot.interaction && plot.interaction.length) {
@@ -926,6 +943,15 @@
         if (plot.barSize || plot.correction) {
           _chart.size(plot.barSize || 35)
         }
+        if (plot.selectColor) {
+          _chart.state({
+            selected: {
+              style: {
+                fill: plot.selectColor,
+              }
+            }
+          })
+        }
         if (plot.barRadius) {
           _chart.style({ radius: [plot.barRadius, plot.barRadius, 0, 0] })
         }
@@ -975,6 +1001,15 @@
         if (plot.barSize || plot.correction) {
           _chart.size(plot.barSize || 35)
         }
+        if (plot.selectColor) {
+          _chart.state({
+            selected: {
+              style: {
+                fill: plot.selectColor,
+              }
+            }
+          })
+        }
         if (plot.barRadius) {
           _chart.style({ radius: [plot.barRadius, plot.barRadius, 0, 0] })
         }
diff --git a/src/menu/components/chart/antv-pie/chartcompile/formconfig.jsx b/src/menu/components/chart/antv-pie/chartcompile/formconfig.jsx
index 3f76049..0839cbb 100644
--- a/src/menu/components/chart/antv-pie/chartcompile/formconfig.jsx
+++ b/src/menu/components/chart/antv-pie/chartcompile/formconfig.jsx
@@ -281,6 +281,23 @@
         text: '绱姞'
       }]
     }, {
+      type: 'number',
+      key: 'splitLine',
+      label: '鍒嗛殧绾�',
+      initVal: card.splitLine || '',
+      tooltip: '鍒嗛殧绾跨殑瀹藉害銆�',
+      min: 0,
+      max: 20,
+      decimal: 0,
+      required: false
+    }, {
+      type: 'color',
+      key: 'splitColor',
+      label: '鍒嗛殧鑹�',
+      initVal: card.splitColor || '#ffffff',
+      tooltip: '鍒嗛殧绾跨殑棰滆壊锛屽瓨鍦ㄥ垎闅旂嚎鏃舵湁鏁堛��',
+      required: false
+    }, {
       type: 'color',
       key: 'color',
       label: '鑹茬郴',
diff --git a/src/menu/components/chart/antv-pie/index.jsx b/src/menu/components/chart/antv-pie/index.jsx
index 9af66e2..343f9ae 100644
--- a/src/menu/components/chart/antv-pie/index.jsx
+++ b/src/menu/components/chart/antv-pie/index.jsx
@@ -289,11 +289,13 @@
           value: percent,
         }
       })
-      .style({
-        lineWidth: 1,
-        stroke: '#fff',
-      })
 
+    if (plot.splitLine) {
+      chart1.style({
+        lineWidth: plot.splitLine,
+        stroke: plot.splitColor,
+      })
+    }
     if (plot.label !== 'false') {
       chart1.label(type, {
         offset: -10,
@@ -330,68 +332,71 @@
           value: value
         }
       })
-      .style({
-        lineWidth: 1,
-        stroke: '#fff',
-      })
 
-      if (plot.label !== 'false') {
-        if (plot.label === 'inner') {
-          chart2.label(Y_axis, {
-            offset: -30,
-            content: (data) => {
-              let _label = ''
-              let _val = ''
-              if (plot.show !== 'value') {
-                _val = `${(data[Y_axis] * 100).toFixed(2)}%`
-              } else {
-                _val = `${data[Y_axis]}`
-              }
-              if (plot.label === 'inner') {
-                _label = _val
-              } else {
-                _label = `${data[X_axis]}: ${_val}`
-              }
-              return _label
-            },
-            style: {
-              textAlign: 'center',
-              fontSize: 16,
-              shadowBlur: 2,
-              shadowColor: 'rgba(0, 0, 0, .45)',
-              fill: '#fff',
+    if (plot.splitLine) {
+      chart2.style({
+        lineWidth: plot.splitLine,
+        stroke: plot.splitColor,
+      })
+    }
+
+    if (plot.label !== 'false') {
+      if (plot.label === 'inner') {
+        chart2.label(Y_axis, {
+          offset: -30,
+          content: (data) => {
+            let _label = ''
+            let _val = ''
+            if (plot.show !== 'value') {
+              _val = `${(data[Y_axis] * 100).toFixed(2)}%`
+            } else {
+              _val = `${data[Y_axis]}`
             }
-          })
-        } else {
-          chart2.label(Y_axis, {
-            layout: { type: 'pie-spider' },
-            labelHeight: 20,
-            content: (data) => {
-              let _label = ''
-              let _val = ''
-              if (plot.show !== 'value') {
-                _val = `${(data[Y_axis] * 100).toFixed(2)}%`
-              } else {
-                _val = `${data[Y_axis]}`
-              }
-              if (plot.label === 'inner') {
-                _label = _val
-              } else {
-                _label = `${data[X_axis]}: ${_val}`
-              }
-              return _label
-            },
-            labelLine: {
-              style: {
-                lineWidth: 0.5,
-              },
-            },
-            style: {
-              fill: color
+            if (plot.label === 'inner') {
+              _label = _val
+            } else {
+              _label = `${data[X_axis]}: ${_val}`
             }
-          })
-        }
+            return _label
+          },
+          style: {
+            textAlign: 'center',
+            fontSize: 16,
+            shadowBlur: 2,
+            shadowColor: 'rgba(0, 0, 0, .45)',
+            fill: '#fff',
+          }
+        })
+      } else {
+        chart2.label(Y_axis, {
+          layout: { type: 'pie-spider' },
+          labelHeight: 20,
+          content: (data) => {
+            let _label = ''
+            let _val = ''
+            if (plot.show !== 'value') {
+              _val = `${(data[Y_axis] * 100).toFixed(2)}%`
+            } else {
+              _val = `${data[Y_axis]}`
+            }
+            if (plot.label === 'inner') {
+              _label = _val
+            } else {
+              _label = `${data[X_axis]}: ${_val}`
+            }
+            return _label
+          },
+          labelLine: {
+            style: {
+              lineWidth: 0.5,
+            },
+          },
+          style: {
+            fill: color
+          }
+        })
       }
+    }
     
     if (plot.interaction && plot.interaction.length) {
       plot.interaction.forEach(t => {
@@ -488,6 +493,7 @@
       })
     }
 
+    // 楗煎浘鎴栫幆鍥�
     if (plot.shape !== 'nightingale') {
       let _chart = chart
         .interval()
@@ -503,6 +509,14 @@
             value: value
           }
         })
+
+      if (plot.splitLine) {
+        _chart.style({
+          lineWidth: plot.splitLine,
+          stroke: plot.splitColor,
+        })
+      }
+
       if (plot.label !== 'false') {
         if (plot.label === 'inner') {
           _chart.label(Y_axis, {
@@ -578,9 +592,11 @@
           }
 
           _chart.label(X_axis, _label)
-          .style({
-            lineWidth: 1,
-            stroke: '#fff',
+        }
+        if (plot.splitLine) {
+          _chart.style({
+            lineWidth: plot.splitLine,
+            stroke: plot.splitColor,
           })
         }
     }
diff --git a/src/mob/colorsketch/index.jsx b/src/mob/colorsketch/index.jsx
index 753a443..7eb42c9 100644
--- a/src/mob/colorsketch/index.jsx
+++ b/src/mob/colorsketch/index.jsx
@@ -2,7 +2,7 @@
 import PropTypes from 'prop-types'
 // import { is, fromJS } from 'immutable'
 import { SketchPicker } from 'react-color'
-import { Popover } from 'antd'
+import { Popover, Icon } from 'antd'
 
 import './index.scss'
 
@@ -20,10 +20,11 @@
   }
   state = {
     color: '',
+    allowClear: false
   }
 
   UNSAFE_componentWillMount () {
-    const { defaultValue, value } = this.props
+    const { defaultValue, value, allowClear } = this.props
     let initVal = ''
 
     if (this.props['data-__meta']) {
@@ -34,7 +35,7 @@
       initVal = value
     }
     
-    this.setState({color: initVal})
+    this.setState({color: initVal, allowClear: allowClear === true})
   }
 
   handleChange = (color) => {
@@ -45,6 +46,12 @@
     })
   }
 
+  clear = () => {
+    this.setState({ color: '' }, () => {
+      this.props.onChange && this.props.onChange('')
+    })
+  }
+
   UNSAFE_componentWillReceiveProps(nextProps) {
     if (nextProps.value !== undefined && nextProps.value !== this.state.color) {
       this.setState({ color: nextProps.value })
@@ -52,7 +59,7 @@
   }
 
   render() {
-    const { color } = this.state
+    const { color, allowClear } = this.state
     return (
       <div className="color-sketch-block">
         <Popover content={
@@ -62,7 +69,7 @@
             <div className="color-sketch-block-inner" style={ {background: color} }></div>
           </div>
         </Popover>
-        <div className="color-sketch-value">{color}</div>
+        <div className="color-sketch-value">{color}{allowClear && color ? <Icon onClick={this.clear} type="close"/> : null}</div>
       </div>
     )
   }
diff --git a/src/mob/colorsketch/index.scss b/src/mob/colorsketch/index.scss
index b6aec44..ce226de 100644
--- a/src/mob/colorsketch/index.scss
+++ b/src/mob/colorsketch/index.scss
@@ -18,6 +18,7 @@
     height: 100%;
   }
   .color-sketch-value {
+    position: relative;
     display: inline-block;
     font-size: 13px;
     width: 160px;
@@ -27,6 +28,23 @@
     vertical-align: top;
     white-space: nowrap;
     overflow: visible;
+
+    .anticon-close {
+      position: relative;
+      right: -10px;
+      font-size: 10px;
+      padding: 3px;
+      background: #eeeeee;
+      border-radius: 50%;
+      cursor: pointer;
+      opacity: 0;
+      transition: opacity 0.3s;
+    }
+  }
+}
+.color-sketch-block:hover {
+  .anticon-close {
+    opacity: 1;
   }
 }
 
diff --git a/src/tabviews/custom/components/chart/antv-bar-line/index.jsx b/src/tabviews/custom/components/chart/antv-bar-line/index.jsx
index 21ce0d1..85e467d 100644
--- a/src/tabviews/custom/components/chart/antv-bar-line/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-bar-line/index.jsx
@@ -2,7 +2,7 @@
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
 import { Chart } from '@antv/g2'
-import { connect } from 'react-redux'
+// import { connect } from 'react-redux'
 import DataSet from '@antv/data-set'
 import { Spin, Empty, notification } from 'antd'
 import moment from 'moment'
@@ -12,7 +12,7 @@
 import Api from '@/api'
 import Utils from '@/utils/utils.js'
 import UtilsDM from '@/utils/utils-datamanage.js'
-import { modifyTabview } from '@/store/action'
+// import { modifyTabview } from '@/store/action'
 import MKEmitter from '@/utils/events.js'
 import './index.scss'
 
@@ -518,7 +518,7 @@
    * 3銆佹煴鐘跺浘鏁版嵁琛ラ綈
    */
   getdata = () => {
-    const { data, plot, vFields } = this.state
+    const { data, plot, vFields, config } = this.state
 
     if (!data || data.length === 0) {
       this.setState({empty: true})
@@ -563,6 +563,7 @@
           item[col.field] = item[col.field].toFixed(col.decimal)
           item[col.field] = +item[col.field]
         })
+        item.$$uuid = item[config.setting.primaryKey] || ''
         return item
       })
     } else if (plot.repeat === 'cumsum') {
@@ -597,6 +598,7 @@
           item[col.field] = item[col.field].toFixed(col.decimal)
           item[col.field] = +item[col.field]
         })
+        item.$$uuid = item[config.setting.primaryKey] || ''
         return item
       })
     } else { // plot.repeat === 'unrepeat'
@@ -616,6 +618,8 @@
             item[col.field] = item[col.field].toFixed(col.decimal)
             item[col.field] = +item[col.field]
           })
+          
+          item.$$uuid = item[config.setting.primaryKey] || ''
           _mdata.set(item[plot.Xaxis], item)
         }
       })
@@ -908,12 +912,16 @@
       })
     }
 
-    if (plot.point === 'true' && plot.$colors) {
-      let limit = chartColors.length
-      chart
+    if (plot.point === 'true') {
+      let _chart = chart
         .point()
         .position(`${plot.Xaxis}*${_valfield}`)
-        .color(_typefield, (key) => {
+        .size(3)
+        .shape('circle')
+
+      if (plot.$colors) {
+        let limit = chartColors.length
+        _chart.color(_typefield, (key) => {
           if (plot.$colors.has(key)) {
             return plot.$colors.get(key)
           } else {
@@ -921,15 +929,31 @@
             return chartColors[(colorIndex - 1) % limit]
           }
         })
-        .size(3)
-        .shape('circle')
-    } else if (plot.point === 'true') {
-      chart
-        .point()
+      } else {
+        _chart.color(_typefield)
+      }
+    }
+
+    if (plot.area === 'true') {
+      let area = chart
+        .area()
+        .shape(plot.shape || 'smooth')
         .position(`${plot.Xaxis}*${_valfield}`)
-        .color(_typefield)
-        .size(3)
-        .shape('circle')
+        .tooltip(false)
+
+      if (plot.$colors) {
+        let limit = chartColors.length
+        area.color(_typefield, (key) => {
+          if (plot.$colors.has(key)) {
+            return plot.$colors.get(key)
+          } else {
+            colorIndex++
+            return chartColors[(colorIndex - 1) % limit]
+          }
+        })
+      } else {
+        area.color(_typefield)
+      }
     }
 
     if (plot.interaction && plot.interaction.length) {
@@ -1285,7 +1309,7 @@
    * @description 鏌辩姸鍥炬覆鏌�
    */
   barrender = () => {
-    const { plot, transfield } = this.state
+    const { plot, transfield, config } = this.state
 
     let _data = []
     let _valfield = 'value'
@@ -1448,6 +1472,15 @@
       if (plot.barSize || plot.correction) {
         _chart.size(plot.barSize || 35)
       }
+      if (plot.selectColor) {
+        _chart.state({
+          selected: {
+            style: {
+              fill: plot.selectColor,
+            }
+          }
+        })
+      }
       if (plot.barRadius) {
         _chart.style({ radius: [plot.barRadius, plot.barRadius, 0, 0] })
       }
@@ -1494,58 +1527,72 @@
       if (plot.barSize || plot.correction) {
         _chart.size(plot.barSize || 35)
       }
+      if (plot.selectColor) {
+        _chart.state({
+          selected: {
+            style: {
+              fill: plot.selectColor,
+            }
+          }
+        })
+      }
       if (plot.barRadius) {
         _chart.style({ radius: [plot.barRadius, plot.barRadius, 0, 0] })
       }
     }
 
-    if (plot.linkmenu && plot.linkmenu.length > 0) {
-      let menu_id = plot.linkmenu.slice(-1)[0]
-      let menu = this.props.permMenus.filter(m => m.MenuID === menu_id)[0] || ''
+    chart.on('element:click', (ev) => {
+      let data = ev.data.data
+      MKEmitter.emit('resetSelectLine', config.uuid, (data ? data.$$uuid : ''), null)
+    })
 
-      chart.on('element:dblclick', (ev) => {
-        if (!menu) {
-          notification.warning({
-            top: 92,
-            message: '鑿滃崟宸插垹闄ゆ垨娌℃湁璁块棶鏉冮檺锛�',
-            duration: 5
-          })
-          return
-        }
+    // if (plot.linkmenu && plot.linkmenu.length > 0) {
+    //   let menu_id = plot.linkmenu.slice(-1)[0]
+    //   let menu = this.props.permMenus.filter(m => m.MenuID === menu_id)[0] || ''
 
-        try {
-          let data = ev.data.data
-          let primaryId = ''
-          if (this.state.config.setting.primaryKey && data) {
-            primaryId = data[this.state.config.setting.primaryKey] || ''
-          }
+    //   chart.on('element:dblclick', (ev) => {
+    //     if (!menu) {
+    //       notification.warning({
+    //         top: 92,
+    //         message: '鑿滃崟宸插垹闄ゆ垨娌℃湁璁块棶鏉冮檺锛�',
+    //         duration: 5
+    //       })
+    //       return
+    //     }
 
-          let newtab = {
-            ...menu,
-            selected: true,
-            param: {
-              $BID: primaryId
-            }
-          }
+    //     try {
+    //       let data = ev.data.data
+    //       let primaryId = ''
+    //       if (this.state.config.setting.primaryKey && data) {
+    //         primaryId = data[this.state.config.setting.primaryKey] || ''
+    //       }
+
+    //       let newtab = {
+    //         ...menu,
+    //         selected: true,
+    //         param: {
+    //           $BID: primaryId
+    //         }
+    //       }
   
-          let tabs = this.props.tabviews.filter(tab => {
-            tab.selected = false
-            return tab.MenuID !== newtab.MenuID
-          })
+    //       let tabs = this.props.tabviews.filter(tab => {
+    //         tab.selected = false
+    //         return tab.MenuID !== newtab.MenuID
+    //       })
   
-          if (this.props.tabviews.length > tabs.length) {
-            this.props.modifyTabview(fromJS(tabs).toJS())
-          }
+    //       if (this.props.tabviews.length > tabs.length) {
+    //         this.props.modifyTabview(fromJS(tabs).toJS())
+    //       }
   
-          this.setState({}, () => {
-            tabs.push(newtab)
-            this.props.modifyTabview(tabs)
-          })
-        } catch {
-          console.warn('鑿滃崟鎵撳紑澶辫触锛�')
-        }
-      })
-    }
+    //       this.setState({}, () => {
+    //         tabs.push(newtab)
+    //         this.props.modifyTabview(tabs)
+    //       })
+    //     } catch {
+    //       console.warn('鑿滃崟鎵撳紑澶辫触锛�')
+    //     }
+    //   })
+    // }
 
     if (plot.interaction && plot.interaction.length) {
       plot.interaction.forEach(t => {
@@ -1608,17 +1655,18 @@
   }
 }
 
-const mapStateToProps = (state) => {
-  return {
-    tabviews: state.tabviews,
-    permMenus: state.permMenus,
-  }
-}
+// const mapStateToProps = (state) => {
+//   return {
+//     tabviews: state.tabviews,
+//     permMenus: state.permMenus,
+//   }
+// }
 
-const mapDispatchToProps = (dispatch) => {
-  return {
-    modifyTabview: (tabviews) => dispatch(modifyTabview(tabviews))
-  }
-}
+// const mapDispatchToProps = (dispatch) => {
+//   return {
+//     modifyTabview: (tabviews) => dispatch(modifyTabview(tabviews))
+//   }
+// }
 
-export default connect(mapStateToProps, mapDispatchToProps)(LineChart)
\ No newline at end of file
+// export default connect(mapStateToProps, mapDispatchToProps)(LineChart)
+export default LineChart
\ No newline at end of file
diff --git a/src/tabviews/custom/components/chart/antv-pie/index.jsx b/src/tabviews/custom/components/chart/antv-pie/index.jsx
index 05b7249..ec281d5 100644
--- a/src/tabviews/custom/components/chart/antv-pie/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-pie/index.jsx
@@ -597,18 +597,22 @@
           value: percent,
         }
       })
-      .style({
-        lineWidth: 1,
-        stroke: '#fff',
+    if (plot.splitLine) {
+      chart1.style({
+        lineWidth: plot.splitLine,
+        stroke: plot.splitColor,
       })
+    }
     if (plot.colors && plot.colors.length > 0) {
       let limit = chartColors.length
       chart1.color(type, (_type) => {
         if (colors.has(_type)) {
           return colors.get(_type)
         } else {
+          let _c = chartColors[colorIndex % limit]
+          colors.set(type, _c)
           colorIndex++
-          return chartColors[(colorIndex - 1) % limit]
+          return _c
         }
       })
     } else {
@@ -650,82 +654,86 @@
           value: value
         }
       })
-      .style({
-        lineWidth: 1,
-        stroke: '#fff',
-      })
 
-      if (plot.colors && plot.colors.length > 0) {
-        let limit = chartColors.length
-        chart2.color(X_axis, (type) => {
-          if (colors.has(type)) {
-            return colors.get(type)
-          } else {
-            colorIndex++
-            return chartColors[(colorIndex - 1) % limit]
+    if (plot.splitLine) {
+      chart2.style({
+        lineWidth: plot.splitLine,
+        stroke: plot.splitColor,
+      })
+    }
+    if (plot.colors && plot.colors.length > 0) {
+      let limit = chartColors.length
+      chart2.color(X_axis, (type) => {
+        if (colors.has(type)) {
+          return colors.get(type)
+        } else {
+          let _c = chartColors[colorIndex % limit]
+          colors.set(type, _c)
+          colorIndex++
+          return _c
+        }
+      })
+    } else {
+      chart2.color(X_axis)
+    }
+
+    if (plot.label !== 'false') {
+      if (plot.label === 'inner') {
+        chart2.label(Y_axis, {
+          offset: -30,
+          content: (data) => {
+            let _label = ''
+            let _val = ''
+            if (plot.show !== 'value') {
+              _val = `${(data[Y_axis] * 100).toFixed(2)}%`
+            } else {
+              _val = `${data[Y_axis]}`
+            }
+            if (plot.label === 'inner') {
+              _label = _val
+            } else {
+              _label = `${data[X_axis]}: ${_val}`
+            }
+            return _label
+          },
+          style: {
+            textAlign: 'center',
+            fontSize: 16,
+            shadowBlur: 2,
+            shadowColor: 'rgba(0, 0, 0, .45)',
+            fill: '#fff',
           }
         })
       } else {
-        chart2.color(X_axis)
-      }
-
-      if (plot.label !== 'false') {
-        if (plot.label === 'inner') {
-          chart2.label(Y_axis, {
-            offset: -30,
-            content: (data) => {
-              let _label = ''
-              let _val = ''
-              if (plot.show !== 'value') {
-                _val = `${(data[Y_axis] * 100).toFixed(2)}%`
-              } else {
-                _val = `${data[Y_axis]}`
-              }
-              if (plot.label === 'inner') {
-                _label = _val
-              } else {
-                _label = `${data[X_axis]}: ${_val}`
-              }
-              return _label
-            },
-            style: {
-              textAlign: 'center',
-              fontSize: 16,
-              shadowBlur: 2,
-              shadowColor: 'rgba(0, 0, 0, .45)',
-              fill: '#fff',
+        chart2.label(Y_axis, {
+          layout: { type: 'pie-spider' },
+          labelHeight: 20,
+          content: (data) => {
+            let _label = ''
+            let _val = ''
+            if (plot.show !== 'value') {
+              _val = `${(data[Y_axis] * 100).toFixed(2)}%`
+            } else {
+              _val = `${data[Y_axis]}`
             }
-          })
-        } else {
-          chart2.label(Y_axis, {
-            layout: { type: 'pie-spider' },
-            labelHeight: 20,
-            content: (data) => {
-              let _label = ''
-              let _val = ''
-              if (plot.show !== 'value') {
-                _val = `${(data[Y_axis] * 100).toFixed(2)}%`
-              } else {
-                _val = `${data[Y_axis]}`
-              }
-              if (plot.label === 'inner') {
-                _label = _val
-              } else {
-                _label = `${data[X_axis]}: ${_val}`
-              }
-              return _label
-            },
-            labelLine: {
-              style: {
-                lineWidth: 0.5,
-              },
-            },
-            style: {
-              fill: color
+            if (plot.label === 'inner') {
+              _label = _val
+            } else {
+              _label = `${data[X_axis]}: ${_val}`
             }
-          })
-        }
+            return _label
+          },
+          labelLine: {
+            style: {
+              lineWidth: 0.5,
+            },
+          },
+          style: {
+            fill: color
+          }
+        })
       }
+    }
     if (plot.interaction && plot.interaction.length) {
       plot.interaction.forEach(t => {
         chart.interaction(t)
@@ -845,14 +853,23 @@
             value: value
           }
         })
+
+      if (plot.splitLine) {
+        _chart.style({
+          lineWidth: plot.splitLine,
+          stroke: plot.splitColor,
+        })
+      }
       if (plot.colors && plot.colors.length > 0) {
         let limit = chartColors.length
         _chart.color(X_axis, (type) => {
           if (colors.has(type)) {
             return colors.get(type)
           } else {
+            let _c = chartColors[colorIndex % limit]
+            colors.set(type, _c)
             colorIndex++
-            return chartColors[(colorIndex - 1) % limit]
+            return _c
           }
         })
       } else {
@@ -916,8 +933,10 @@
           if (colors.has(type)) {
             return colors.get(type)
           } else {
+            let _c = chartColors[colorIndex % limit]
+            colors.set(type, _c)
             colorIndex++
-            return chartColors[(colorIndex - 1) % limit]
+            return _c
           }
         })
       } else {
@@ -934,9 +953,11 @@
         }
 
         _chart.label(X_axis, _label)
-        .style({
-          lineWidth: 1,
-          stroke: '#fff',
+      }
+      if (plot.splitLine) {
+        _chart.style({
+          lineWidth: plot.splitLine,
+          stroke: plot.splitColor,
         })
       }
     }

--
Gitblit v1.8.0