Explorar o código

Merge branch 'change-chart-limit'

cxmo hai 1 ano
pai
achega
eea78da5e2
Modificáronse 3 ficheiros con 293 adicións e 70 borrados
  1. 241 52
      src/hooks/chart/render.js
  2. 25 9
      src/views/chartETA/ChartDetail.vue
  3. 27 9
      src/views/myETA/ChartDetail.vue

+ 241 - 52
src/hooks/chart/render.js

@@ -16,7 +16,6 @@ HighchartsMore(Highcharts)
 Boost(Highcharts)
 
 
-
 /**
  * 渲染图方法
  * @param data 图详情数据
@@ -48,12 +47,17 @@ const axisLimitState = reactive({//极值数据
     xMin:0,
     xMax:0,
 })
+//仅ETA图库内图表需要使用自定义上下限
+let useSalfLimit = false
+let isUseSelfLimit = ref(false)
 
 export function useChartRender(){
     return {
         options,
         axisLimitState,
         chartRender,
+        setLimitData,
+        isUseSelfLimit
     }
 }
 
@@ -81,21 +85,25 @@ export function chartRender({data,renderId,lang='zh',changeLangIsCheck,showChart
     axisLimitState.hasRightTwoAxis=false
     axisLimitState.hasXAxis=false
 
-    axisLimitState.leftMin=0
-    axisLimitState.leftMax=0
-    axisLimitState.rightMin=0
-    axisLimitState.rightMax=0
-    axisLimitState.rightTwoMin=0
-    axisLimitState.rightTwoMax=0
-    axisLimitState.xMin=0
-    axisLimitState.xMax=0
+    //使用自定义上下限时,不需要初始化极值
+    if(!isUseSelfLimit.value){
+        axisLimitState.leftMin=0
+        axisLimitState.leftMax=0
+        axisLimitState.rightMin=0
+        axisLimitState.rightMax=0
+        axisLimitState.rightTwoMin=0
+        axisLimitState.rightTwoMax=0
+        axisLimitState.xMin=0
+        axisLimitState.xMax=0
+    }
+    
 
 
     let chartOpt={}
     LangType.value=lang
     RenderDomId.value=renderId
     chartData.value=data
-
+    useSalfLimit = ['/myETA/chartdetail','/chartETA/chartdetail'].includes(window.location.pathname)
     if(data.ChartInfo.Source===1){
         const chartSetMap = {
             1: setSplineOpt,
@@ -586,6 +594,8 @@ function setStatisticFrequency(e){
 
 //曲线图
 function setSplineOpt(e){
+    //其他Source也会用到曲线图,这里需要兼容
+    const isETASource = e.ChartInfo.Source===1
     const data=[4,6,7,8].includes(e.ChartInfo.Source)?[e.DataResp]:e.EdbInfoList
     let series=[]
     let yAxis=[]
@@ -657,6 +667,23 @@ function setSplineOpt(e){
             temYRightArr.push(item)
         }
 
+        //获取上下限
+        let minLimit = 0,maxLimit = 0
+        if(!useSalfLimit||!isETASource){
+            minLimit = item.MinData
+            maxLimit = item.MaxData
+        }
+        if(useSalfLimit&&isETASource){
+            const limitMap = {
+                0:['rightMin','rightMax'],
+                1:['leftMin','leftMax'],
+                2:['rightTwoMin','rightTwoMax']
+            }
+            if(limitMap[item.IsAxis]){
+                minLimit = axisLimitState[`${limitMap[item.IsAxis][0]}`]||0
+                maxLimit = axisLimitState[`${limitMap[item.IsAxis][1]}`]||0
+            }
+        }
         const textZh = item.ConvertUnit||item.Unit
         const textEn = item.ConvertEnUnit||item.UnitEn||item.ConvertUnit||item.Unit
         let yItem={
@@ -689,8 +716,8 @@ function setSplineOpt(e){
             },
             opposite: [0,2].includes(item.IsAxis),
             reversed: item.IsOrder,
-            min: item.MinData,
-            max: item.MaxData,
+            min: Number(minLimit),
+            max: Number(maxLimit),
             visible: sameSideIndex === index,
             chartEdbInfo:item,//指标数据用于在保存时读取指标数据
             plotBands: setAxisPlotAreas(item.IsAxis),
@@ -734,29 +761,31 @@ function setSplineOpt(e){
     yAxis.forEach(item=>{
         if(item.IsAxis===1){//左轴
             axisLimitState.hasLeftAxis=true
-            axisLimitState.leftMin=data[temYLeftIndex].MinData
-            axisLimitState.leftMax=data[temYLeftIndex].MaxData
+            if(!useSalfLimit||!isETASource){
+                axisLimitState.leftMin=data[temYLeftIndex].MinData
+                axisLimitState.leftMax=data[temYLeftIndex].MaxData
 
-            // item.min=getAxisMaxOrMin(temYLeftArr,'min')
-            // item.max=getAxisMaxOrMin(temYLeftArr,'max')
-            item.min=data[temYLeftIndex].MinData
-            item.max=data[temYLeftIndex].MaxData
+                item.min=data[temYLeftIndex].MinData
+                item.max=data[temYLeftIndex].MaxData
+            }
         }else if (item.IsAxis===2){ // 右2轴
             axisLimitState.hasRightTwoAxis=true
-            axisLimitState.rightTwoMin=data[temYRightTwoIndex].MinData
-            axisLimitState.rightTwoMax=data[temYRightTwoIndex].MaxData
+            if(!useSalfLimit||!isETASource){
+                axisLimitState.rightTwoMin=data[temYRightTwoIndex].MinData
+                axisLimitState.rightTwoMax=data[temYRightTwoIndex].MaxData
 
-            item.min=data[temYRightTwoIndex].MinData
-            item.max=data[temYRightTwoIndex].MaxData
+                item.min=data[temYRightTwoIndex].MinData
+                item.max=data[temYRightTwoIndex].MaxData
+            }
         }else{
             axisLimitState.hasRightAxis=true
-            axisLimitState.rightMin=data[temYRightIndex].MinData
-            axisLimitState.rightMax=data[temYRightIndex].MaxData
+            if(!useSalfLimit||!isETASource){
+                axisLimitState.rightMin=data[temYRightIndex].MinData
+                axisLimitState.rightMax=data[temYRightIndex].MaxData
 
-            // item.min=getAxisMaxOrMin(temYRightArr,'min')
-            // item.max=getAxisMaxOrMin(temYRightArr,'max')
-            item.min=data[temYRightIndex].MinData
-            item.max=data[temYRightIndex].MaxData
+                item.min=data[temYRightIndex].MinData
+                item.max=data[temYRightIndex].MaxData
+            }
         }
     })
 
@@ -815,6 +844,17 @@ function setSeasonOpt(e){
             }
             series.push(seriesItem)
         })
+    
+    //获取上下限
+    let minLimit = 0,maxLimit = 0
+    //非ETA图库不使用自定义上下限
+    if(!useSalfLimit){
+        minLimit = data.MinData
+        maxLimit = data.MaxData
+    }else{
+        minLimit = axisLimitState.leftMin||0
+        maxLimit = axisLimitState.leftMax||0
+    }
     const textZh = data.ConvertUnit||data.Unit
     const textEn = data.ConvertEnUnit||data.UnitEn||data.ConvertUnit||data.Unit
     yAxis=[{
@@ -841,8 +881,8 @@ function setSeasonOpt(e){
                 ...chartTheme&&chartTheme.yAxisOptions.style
             },
         },
-        max: Number(data.MaxData),
-        min: Number(data.MinData),
+        max: Number(maxLimit),
+        min: Number(minLimit),
         plotBands: setAxisPlotAreas(1),
         plotLines: setAxisPlotLines(1),
         lineWidth: 1,
@@ -868,8 +908,11 @@ function setSeasonOpt(e){
     // chartData.rangeSelector=rangeSelector
     // 设置坐标轴极值
     axisLimitState.hasLeftAxis=true
-    axisLimitState.leftMin=Number(data.MinData)
-    axisLimitState.leftMax=Number(data.MaxData)
+    if(!useSalfLimit){
+        axisLimitState.leftMin=Number(data.MinData)
+        axisLimitState.leftMax=Number(data.MaxData)
+    }
+    
 
     // 季节图x轴显示月/日
     let xAxis={
@@ -960,6 +1003,7 @@ function setStackOrCombinChart(e){
     //有右二轴时排个序 按照左 右 右2的顺序
     let newData = data.some(_ =>_.IsAxis===2) ? changeEdbOrder(data) : data;
 
+
     newData.forEach((item,index)=>{
 
         //轴位置值相同的下标
@@ -1027,6 +1071,23 @@ function setStackOrCombinChart(e){
         }
         series.push(seriesItemObj)
         
+        //获取上下限
+        let minLimit = 0,maxLimit = 0
+        //非ETA图库不使用自定义上下限
+        if(!useSalfLimit){
+            minLimit = newData[sameSideIndex].MinData
+            maxLimit = newData[sameSideIndex].MaxData
+        }else{
+            const limitMap = {
+                0:['rightMin','rightMax'],
+                1:['leftMin','leftMax'],
+                2:['rightTwoMin','rightTwoMax']
+            }
+            if(limitMap[item.IsAxis]){
+                minLimit = axisLimitState[`${limitMap[item.IsAxis][0]}`]||0
+                maxLimit = axisLimitState[`${limitMap[item.IsAxis][1]}`]||0
+            }
+        }
 
         // 设置y轴
         if(item.IsAxis){
@@ -1068,8 +1129,8 @@ function setStackOrCombinChart(e){
             },
             opposite: [0,2].includes(item.IsAxis),
             reversed: item.IsOrder,
-            min: item.MinData,
-            max: item.MaxData,
+            min: Number(minLimit),
+            max: Number(maxLimit),
             tickWidth: sameSideIndex !== index ? 0 : 1,
             visible: serie_yIndex === index && sameSideIndex ===index,
             plotBands: setAxisPlotAreas(item.IsAxis),
@@ -1109,31 +1170,40 @@ function setStackOrCombinChart(e){
         plotLines: setAxisPlotLines(3,'datetime')
     }
     
-
     yAxis.forEach(item=>{
         if(item.IsAxis === 1){//左轴
             axisLimitState.hasLeftAxis=true
-            axisLimitState.leftMin=data[temYLeftIndex].MinData
-            axisLimitState.leftMax=data[temYLeftIndex].MaxData
+            if(!useSalfLimit){
+                axisLimitState.leftMin=data[temYLeftIndex].MinData
+                axisLimitState.leftMax=data[temYLeftIndex].MaxData
 
-            item.min=data[temYLeftIndex].MinData
-            item.max=data[temYLeftIndex].MaxData
+                item.min=data[temYLeftIndex].MinData
+                item.max=data[temYLeftIndex].MaxData
+            }
         }else if (item.IsAxis===2){ // 右2轴
             axisLimitState.hasRightTwoAxis=true
-            axisLimitState.rightTwoMin=data[temYRightTwoIndex].MinData
-            axisLimitState.rightTwoMax=data[temYRightTwoIndex].MaxData
+            if(!useSalfLimit){
+                axisLimitState.rightTwoMin=data[temYRightTwoIndex].MinData
+                axisLimitState.rightTwoMax=data[temYRightTwoIndex].MaxData
 
-            item.min=data[temYRightTwoIndex].MinData
-            item.max=data[temYRightTwoIndex].MaxData
+                item.min=data[temYRightTwoIndex].MinData
+                item.max=data[temYRightTwoIndex].MaxData
+            }
+            
         }else{
             axisLimitState.hasRightAxis=true
-            axisLimitState.rightMin=data[temYRightIndex].MinData
-            axisLimitState.rightMax=data[temYRightIndex].MaxData
+            if(!useSalfLimit){
+                axisLimitState.rightMin=data[temYRightIndex].MinData
+                axisLimitState.rightMax=data[temYRightIndex].MaxData
 
-            item.min=data[temYRightIndex].MinData
-            item.max=data[temYRightIndex].MaxData
+                item.min=data[temYRightIndex].MinData
+                item.max=data[temYRightIndex].MaxData
+            }
+            
         }
     })
+    
+   
 
     return {
         series,
@@ -1158,11 +1228,11 @@ function setScatterOptions(data){
 
     //上下限设置的是y轴,也就是第二个指标的值,改回来
     axisLimitState.hasLeftAxis=true
-    axisLimitState.leftMin=Number(dataList[1].MinData)
+    /* axisLimitState.leftMin=Number(dataList[1].MinData)
     axisLimitState.leftMax=Number(dataList[1].MaxData)
 
     axisLimitData.leftMin=Number(dataList[1].MinData)
-    axisLimitData.leftMax=Number(dataList[1].MaxData)
+    axisLimitData.leftMax=Number(dataList[1].MaxData) */
 
     // 取2个指标中日期相同的数据
     const real_data = [];
@@ -1218,6 +1288,16 @@ function setScatterOptions(data){
 
     const { IsOrder,ChartColor } = dataList[0];
 
+    //获取上下限
+    let minLimit = 0,maxLimit = 0
+    if(!useSalfLimit){
+        minLimit = data.ChartInfo.LeftMin||0;
+        maxLimit = data.ChartInfo.LeftMax||0;
+    }else{
+        minLimit = axisLimitState.leftMin||0
+        maxLimit = axisLimitState.leftMax||0
+    }
+    console.log('check limit',minLimit,maxLimit)
     const textYZh = dataList[1].ConvertUnit||dataList[1].Unit
     const textYEn = dataList[1].ConvertEnUnit||dataList[1].UnitEn||dataList[1].ConvertUnit||dataList[1].Unit
     //y轴
@@ -1247,8 +1327,8 @@ function setScatterOptions(data){
         },
         opposite: false,
         reversed: IsOrder,
-        min: Number(dataList[1].MinData),
-        max: Number(dataList[1].MaxData),
+        min: Number(minLimit),
+        max: Number(maxLimit),
         tickWidth: 1,
         tickLength: 5,
         lineWidth: 1,
@@ -2197,4 +2277,113 @@ function setRadarChart({DataResp,EdbInfoList,ChartInfo}) {
       yAxis,
       xAxis
     }
-}
+}
+
+/* ----自定义上下限相关--- */
+/* 计算y轴上下限 */
+function calcYAxislimit(tableData=[],ChartInfo){
+    //散点图单独处理
+    if(ChartInfo.ChartType===5){
+        if(tableData[1]){
+            axisLimitState.leftMin = tableData[1].MinData
+            axisLimitState.leftMax = tableData[1].MaxData
+        }
+        return 
+    }
+    //分组
+    const leftData = tableData.filter(i => i.IsAxis === 1).map(i => [Number(i.MinData), Number(i.MaxData)])
+    const rightData = tableData.filter(i => !i.IsAxis).map(i => [Number(i.MinData), Number(i.MaxData)])
+    const rightTwoData = tableData.filter(i => i.IsAxis === 2).map(i => [Number(i.MinData), Number(i.MaxData)])
+    //计算最大最小值
+    if (leftData.length) {
+        const {
+            Max,
+            Min
+        } = calcLimit(leftData.flat())
+        axisLimitState.leftMin = Min
+        axisLimitState.leftMax = Max
+    } 
+    if (rightData.length) {
+        const {
+            Max,
+            Min
+        } = calcLimit(rightData.flat())
+        axisLimitState.rightMin = Min
+        axisLimitState.rightMax = Max
+    }
+    if (rightTwoData.length) {
+        const {
+            Max,
+            Min
+        } = calcLimit(rightTwoData.flat())
+        axisLimitState.rightTwoMin = Min
+        axisLimitState.rightTwoMax = Max
+    }
+}
+function calcLimit(arr) {
+    return {
+        Max: Math.max(...arr),
+        Min: Math.min(...arr)
+    }
+}
+//图表详情-设置图表上下限
+function setLimitData({EdbInfoList,ChartInfo}){
+    const {
+        //左右轴极值字段 
+        LeftMin=0,LeftMax=0,
+        RightMin=0,RightMax=0,
+        Right2Min=0,Right2Max=0,
+        MinMaxSave
+    } = ChartInfo
+    if(MinMaxSave){
+        axisLimitState.leftMin = Number(LeftMin)
+        axisLimitState.leftMax = Number(LeftMax)
+        axisLimitState.rightMin = Number(RightMin)
+        axisLimitState.rightMax = Number(RightMax)
+        axisLimitState.rightTwoMin = Number(Right2Min)
+        axisLimitState.rightTwoMax = Number(Right2Max)
+        //若用户修改过,则检测轴的上下限是否为空,若为空,则需要计算对应轴的上下限
+        checkLimit(EdbInfoList,ChartInfo)
+        console.log('check',axisLimitState.leftMin,axisLimitState.leftMax)
+    }else{
+        calcYAxislimit(EdbInfoList,ChartInfo)
+    }
+}
+function checkLimit(tableData=[],ChartInfo){
+    //散点图单独处理
+    if(ChartInfo.ChartType===5){
+        if(tableData[1]){
+            if(Number(axisLimitState.leftMin)===0&&Number(axisLimitState.leftMax)===0){
+                axisLimitState.leftMin = tableData[1].MinData
+                axisLimitState.leftMax = tableData[1].MaxData
+            }
+        }
+        return 
+    }
+    //若轴的上下限均为0,则不管用户有没有修改过,都重新赋值
+    if(Number(axisLimitState.leftMin)===0&&Number(axisLimitState.leftMax)===0){
+        const leftData = tableData.filter(i=>i.IsAxis===1).map(i=>[Number(i.MinData),Number(i.MaxData)])
+        if(leftData.length){
+            const {Max,Min} = this.calcLimit(leftData.flat())
+            axisLimitState.leftMin = Min
+            axisLimitState.leftMax = Max
+        }
+    }
+    if(Number(axisLimitState.rightMin)===0&&Number(axisLimitState.rightMax)===0){
+        const rightData = tableData.filter(i => !i.IsAxis).map(i=>[Number(i.MinData),Number(i.MaxData)])
+        if(rightData.length){
+            const {Max,Min} = this.calcLimit(rightData.flat())
+            axisLimitState.rightMin = Min
+            axisLimitState.rightMax = Max
+        }
+    }
+    if(Number(axisLimitState.rightTwoMin)===0&&Number(axisLimitState.rightTwoMax)===0){
+        const rightTwoData = tableData.filter(i=>i.IsAxis===2).map(i=>[Number(i.MinData),Number(i.MaxData)])
+        if(rightTwoData.length){
+            const {Max,Min} = this.calcLimit(rightTwoData.flat())
+            axisLimitState.rightTwoMin = Min
+            axisLimitState.rightTwoMax = Max
+        }
+    }
+}
+/*-------------------- */

+ 25 - 9
src/views/chartETA/ChartDetail.vue

@@ -20,7 +20,7 @@ const {checkAuthBtn} = useAuthBtn()
 import _ from 'lodash';
 
 const publicSettingStore = usePublicSettingStore()
-const {options,axisLimitState,chartRender}=useChartRender()
+const {options,axisLimitState,chartRender,setLimitData,isUseSelfLimit}=useChartRender()
 const { width } = useWindowSize()
 const cachedViewsStore=useCachedViewsStore()
 const route=useRoute()
@@ -78,7 +78,9 @@ async function getChartDetail(e){
     latestDate.value = extremumDate.latestDate
 
     setDateAppear()
-
+    //初始化上下限
+    isUseSelfLimit.value = true
+    setLimitData(res.Data)
     nextTick(()=>{
         highChart.value = chartRender({
             data:{
@@ -182,12 +184,12 @@ function handleShowAxisLimitOpt(){
 // 极限修改确定
 function handleConfirmLimitChange(){
     const data=_.cloneDeep(chartInfoData)
-
     // 修改左轴极限
     if(axisLimitState.hasLeftAxis){
+        //基础图
         if(axisLimitState.leftIndex!==-1){
-            data.EdbInfoList[axisLimitState.leftIndex].MinData=axisLimitDataTem.leftMin
-            data.EdbInfoList[axisLimitState.leftIndex].MaxData=axisLimitDataTem.leftMax
+            axisLimitState.leftMin = axisLimitDataTem.leftMin
+            axisLimitState.leftMax = axisLimitDataTem.leftMax
         }else{
             // 柱形图 取的ChartInfo中的极值
             if(data.ChartInfo.ChartType ===7){
@@ -212,16 +214,16 @@ function handleConfirmLimitChange(){
     // 修改右轴极限
     if(axisLimitState.hasRightAxis){
         if(axisLimitState.rightIndex!==-1){
-            data.EdbInfoList[axisLimitState.rightIndex].MinData=axisLimitDataTem.rightMin
-            data.EdbInfoList[axisLimitState.rightIndex].MaxData=axisLimitDataTem.rightMax
+            axisLimitState.rightMin = axisLimitDataTem.rightMin
+            axisLimitState.rightMax = axisLimitDataTem.rightMax
         }
     }
 
     //修改右2轴极限
     if(axisLimitState.hasRightTwoAxis){
         if(axisLimitState.rightTwoIndex!==-1){
-            data.EdbInfoList[axisLimitState.rightTwoIndex].MinData=axisLimitDataTem.rightTwoMin
-            data.EdbInfoList[axisLimitState.rightTwoIndex].MaxData=axisLimitDataTem.rightTwoMax
+            axisLimitState.rightMin = axisLimitDataTem.rightTwoMin
+            axisLimitState.rightMax = axisLimitDataTem.rightTwoMax
         }
     }
 
@@ -471,6 +473,19 @@ function saveChart(){
         }
     }
     let params = {...public_param,...type_param}
+    if(![7,10,11].includes(chartInfo.value.ChartType)){
+        params = {
+            ...params,
+            LeftMin:axisLimitState.leftMin+'',
+            LeftMax:axisLimitState.leftMax+'',
+            RightMin:axisLimitState.rightMin+'',
+            RightMax:axisLimitState.rightMax+'',
+            Right2Min:axisLimitState.rightTwoMin+'',
+            Right2Max:axisLimitState.rightTwoMax+'',
+            //手动保存视为更改过上下限
+            MinMaxSave:1
+        }
+    }
     //保存
     apiChart.chartSave(params).then(async res=>{
         if(res.Ret!==200) return
@@ -628,6 +643,7 @@ async function handleSwitchChart(type){
     routeQueryData.chartType=item.ChartType
     routeQueryData.chartClassifyId=item.ChartClassifyId
     initChartState({...item,...routeQueryData})
+    isUseSelfLimit.value = false
     getChartDetail('init')
 }
 function initChartState(data){

+ 27 - 9
src/views/myETA/ChartDetail.vue

@@ -41,7 +41,7 @@ const isMoreActionShow = computed(()=>{
 }) 
 const { width, height } = useWindowSize()
 const cachedViewsStore=useCachedViewsStore()
-const {options,axisLimitState,chartRender}=useChartRender()
+const {options,axisLimitState,chartRender,setLimitData,isUseSelfLimit}=useChartRender()
 
 
 const route=useRoute()
@@ -135,7 +135,13 @@ async function getChartInfo(){
         temStartTime.value=chartState.startTime.split('-')
         temEndTime.value=chartState.endTime.split('-')
     }
-
+    //仅ETA图库图表需要初始化上下限
+    if(res.Data.ChartInfo.Source===1&&![7,10,11].includes(res.Data.ChartInfo.ChartType)){
+        isUseSelfLimit.value = true
+        setLimitData(res.Data)
+    }else{
+        isUseSelfLimit.value = false
+    }
     nextTick(()=>{
         CHARTINS=chartRender({
             data:res.Data,
@@ -290,12 +296,11 @@ function handleShowAxisLimitOpt(){
 // 极限修改确定
 function handleConfirmLimitChange(){
     const data=_.cloneDeep(chartInfoData)
-
     // 修改左轴极限
     if(axisLimitState.hasLeftAxis){
         if(axisLimitState.leftIndex!==-1){
-            data.EdbInfoList[axisLimitState.leftIndex].MinData=axisLimitDataTem.leftMin
-            data.EdbInfoList[axisLimitState.leftIndex].MaxData=axisLimitDataTem.leftMax
+            axisLimitState.leftMin = axisLimitDataTem.leftMin
+            axisLimitState.leftMax = axisLimitDataTem.leftMax
         }else{
             // 柱形图 取的ChartInfo中的极值
             if(data.ChartInfo.ChartType ===7){
@@ -320,16 +325,16 @@ function handleConfirmLimitChange(){
     // 修改右轴极限
     if(axisLimitState.hasRightAxis){
         if(axisLimitState.rightIndex!==-1){
-            data.EdbInfoList[axisLimitState.rightIndex].MinData=axisLimitDataTem.rightMin
-            data.EdbInfoList[axisLimitState.rightIndex].MaxData=axisLimitDataTem.rightMax
+            axisLimitState.rightMin = axisLimitDataTem.rightMin
+            axisLimitState.rightMax = axisLimitDataTem.rightMax
         }
     }
 
     //修改右2轴极限
     if(axisLimitState.hasRightTwoAxis){
         if(axisLimitState.rightTwoIndex!==-1){
-            data.EdbInfoList[axisLimitState.rightTwoIndex].MinData=axisLimitDataTem.rightTwoMin
-            data.EdbInfoList[axisLimitState.rightTwoIndex].MaxData=axisLimitDataTem.rightTwoMax
+            axisLimitState.rightMin = axisLimitDataTem.rightTwoMin
+            axisLimitState.rightMax = axisLimitDataTem.rightTwoMax
         }
     }
 
@@ -622,6 +627,19 @@ function saveChartHandle(){
         }
     }
     let params = {...public_param,...type_param}
+    if(![7,10,11].includes(chartInfo.value.ChartType)){
+        params = {
+            ...params,
+            LeftMin:axisLimitState.leftMin+'',
+            LeftMax:axisLimitState.leftMax+'',
+            RightMin:axisLimitState.rightMin+'',
+            RightMax:axisLimitState.rightMax+'',
+            Right2Min:axisLimitState.rightTwoMin+'',
+            Right2Max:axisLimitState.rightTwoMax+'',
+            //手动保存视为更改过上下限
+            MinMaxSave:1
+        }
+    }
     //保存
     apiChart.chartSave(params).then(async res=>{
         if(res.Ret!==200) return