Jelajahi Sumber

饼图钻取逻辑调整,‘其它’允许钻取了

zhuth 6 tahun lalu
induk
melakukan
0283166ad7

+ 31 - 15
src/components/chartDesigner/charts/echartsView.jsx

@@ -130,17 +130,33 @@ class EchartsView extends Component {
             case 'pie':{
                 //饼图如果是其它 并且tooMany(后台判断有 其他 部分) 为 true 时 不能下钻
                 if( xValue==='其它' && chartOption.baseOption.originConfig.tooMany ){
-                    message.warning('其它类型暂无法钻取');
-                    return false;
+                    drillDown.push({
+                        label : curDrill.column.label,
+                        field : curDrill.column.value,
+                        type : curDrill.column.type,
+                        filter : {
+                            name: preDrill.column.value,
+                            label: preDrill.column.label,
+                            type: preDrill.column.type,
+                            operator: 'notIn',
+                            operatorLabel: '不包括',
+                            value1: originConfig.data.slice(0, -1).map(d => d.name).join(),
+                            value2: originConfig.data.slice(0, -1).map(d => d.name).join(),
+                            drillDownType: preDrill.granularity.value
+                        },
+                        value : xValue,
+                        showDataType : curDrill.column.type==='time'?curDrill.granularity.value:''
+                    });
+                }else {
+                    drillDown.push({
+                        label : curDrill.column.label,
+                        field : curDrill.column.value,
+                        type : curDrill.column.type,
+                        filter : this.getFilter(preDrill,xValue),
+                        value : xValue,
+                        showDataType : curDrill.column.type==='time'?curDrill.granularity.value:''
+                    });
                 }
-                drillDown.push({
-                    label : curDrill.column.label,
-                    field : curDrill.column.value,
-                    type : curDrill.column.type,
-                    filter : this.getFilter(preDrill,xValue),
-                    value : xValue,
-                    showDataType : curDrill.column.type==='time'?curDrill.granularity.value:''
-                });
                 break;
             }
             default:{
@@ -237,16 +253,16 @@ class EchartsView extends Component {
                 let year = value.split(' ')[0];
                 let value1,value2;
                 if(value.indexOf('上半年')>-1){
-                    value1 = `${year}-01-01`
-                    value2 = `${year}-06-30`
+                    value1 = `${year}-H1`;
+                    value2 = `${year}-H1`;
                 }else{
-                    value1 = `${year}-07-01`
-                    value2 = `${year}-12-31`
+                    value1 = `${year}-H2`;
+                    value2 = `${year}-H2`;
                 }
                 return {
                     value1: value1,
                     value2: value2,
-                    operator: 'between',
+                    operator: 'in',
                     operatorLabel: '介于'
                 }
             }

+ 2 - 2
src/components/chartDesigner/sections/pieConfigForm.jsx

@@ -34,7 +34,7 @@ const PieConfigForm = ({ autoRefresh, chartDesigner, dispatch }) => {
 					dispatch({ type: 'chartDesigner/changeField', name: 'pieConfig', value: { ...pieConfig, yAxis: { column, gauge } }, autoRefresh });
 				}}/>
 			</FormItem>
-			{/* <FormItem label='排序目标' {...formItemLayout}>
+			<FormItem label='排序目标' {...formItemLayout}>
 				<Select
 					placeholder='扇区索引'
 					allowClear={true}
@@ -59,7 +59,7 @@ const PieConfigForm = ({ autoRefresh, chartDesigner, dispatch }) => {
 					<Option value='ASC'>升序</Option>
 					<Option value='DESC'>降序</Option>
 				</Select>
-			</FormItem> */}
+			</FormItem>
 			<FormItem label='阈值' {...formItemLayout}>
 				<InputNumber
 					defaultValue={chartDesigner.pieConfig.threshold}

+ 1 - 2
src/models/chartDesigner.js

@@ -569,7 +569,7 @@ export default {
         },
         *fetchPieData(action, { select, call, put }) {
             try {
-                const { inDashBoard, item } = action;
+                const { inDashBoard, item, drillDown } = action;
                 let chartDesigner = yield select(state => state.present.chartDesigner);
                 let dashboardDesigner = yield select(state => state.present.dashboardDesigner);
                 let { code, pieConfig, filters, theme, styleConfig, defaultPieThreshold } = chartDesigner;
@@ -579,7 +579,6 @@ export default {
                     theme = dashboardDesigner.theme;
                     pieConfig = item.chartOption.baseOption.originConfig
                 }
-                const { drillDown } = action;
 
                 const body = {
                     id: code,

+ 2 - 1
src/models/parseChartOption.js

@@ -324,7 +324,8 @@ function pieOption(data, pieConfig, themeConfig, styleConfig, drillDown) {
     let option = deepAssign({
         originConfig: {
             ...pieConfig,
-            tooMany
+            tooMany,
+            data: dataList
         },
         tooltip : {
             trigger: 'item',