浏览代码

ETA图库保存功能,保存完毕更新缩略图

cxmo 1 年之前
父节点
当前提交
5bc2a88f35
共有 3 个文件被更改,包括 147 次插入3 次删除
  1. 29 1
      src/api/chart.js
  2. 117 2
      src/views/chartETA/ChartDetail.vue
  3. 1 0
      src/views/chartETA/Search.vue

+ 29 - 1
src/api/chart.js

@@ -237,5 +237,33 @@ export default{
      */
     chartLocate(params){
         return get('/my_chart/chart/locate',params)
-    }
+    },
+    /*
+     * 保存图表
+     * @param 
+     *    ChartClassifyId: number,
+          ChartInfoId: number,
+          ChartEdbInfoList: [],
+          不同图表类型有不同参数
+     * @returns 
+     */
+    chartSave(params){
+        return post('/datamanage/chart_info/save',params)
+    },
+    /*
+     * 上传图表缩略图
+     * @param FormData
+     * @returns 
+     */
+    uploadChartImg(params){
+        return post('/datamanage/chart_info/base64Upload',params)
+    },
+    /*
+     * 设置图表缩略图
+     * @param ChartInfoId ImageUrl
+     * @returns 
+     */
+    setChartImg(params){
+        return post('/datamanage/chart_info/image/set',params)
+    },
 } 

+ 117 - 2
src/views/chartETA/ChartDetail.vue

@@ -271,6 +271,11 @@ function getChartActions(chartInfo){
             label:'分享',
             show:!Boolean(chartInfo.Disabled)
         },
+        {
+            type:'save',
+            label:'保存',
+            show:true,
+        },
         {
             type:'saveOther',
             label:'另存为',
@@ -307,7 +312,8 @@ function handleActionClick(action){
         'savePic':saveChartPic,
         'setEnName':openSetChartEnNameDialog,
         'addToMyETA':openAddToMyETADialog,
-        'delete':deleteChart
+        'delete':deleteChart,
+        'save':saveChart,
     }
     eventMap[action.type]()
     //showMoreAction.value = false
@@ -372,7 +378,116 @@ function checkChartEnOption(){
     }
     return true
 }
-
+//保存图表
+function saveChart(){
+    //获取每条线的指标配置
+    let arr = edbList.value.map((item)=>{
+        return {
+            ChartColor: item.ChartColor,
+            PredictChartColor: item.PredictChartColor,
+            ChartStyle: item.ChartStyle,
+            ChartWidth: Number(item.ChartWidth),
+            EdbInfoId: item.EdbInfoId,
+            EdbInfoType: item.EdbInfoType,
+            IsAxis: item.IsAxis,
+            IsOrder: item.IsOrder,
+            LeadUnit: item.EdbInfoType ? '' : item.LeadUnit,
+            LeadValue: item.EdbInfoType ? 0 : Number(item.LeadValue),
+            MaxData: Number(item.MaxData),
+            MinData: Number(item.MinData),
+        }
+    })
+    //所有图表的公共参数
+    let public_param = {
+        ChartClassifyId: chartInfo.value.ChartClassifyId,
+        ChartInfoId: chartInfo.value.ChartInfoId,
+        ChartEdbInfoList: arr,
+    }
+    //根据ChartType决定剩余参数
+    let type_param = {}
+    switch(chartInfo.value.ChartType){
+        case 2:
+            type_param = {
+              DateType: chartState.yearVal,
+              StartYear:chartState.startYear || 0,
+              Calendar: chartState.calendarType,
+              StartDate: chartState.startTime||'',
+              EndDate: chartState.endTime||'',
+            }
+            break
+        case 7:
+            type_param = {
+              DateType: 6,
+              LeftMin: String(axisLimitState.leftMin),
+              LeftMax: String(axisLimitState.leftMax),
+            }
+            break
+        case 10:
+            type_param = {
+              DateType: 6,
+              Calendar: "公历",
+              ExtraConfig: JSON.stringify({
+                ...JSON.parse(chartInfo.value.ExtraConfig),
+                XMinValue: String(axisLimitState.xMin),
+                XMaxValue: String(axisLimitState.xMax),
+                YMinValue: String(axisLimitState.leftMin),
+                YMaxValue: String(axisLimitState.leftMax),
+              })
+            }
+            break
+    }
+    if(sameOptionType.includes(chartInfo.value.ChartType)){
+        type_param = {
+            DateType: chartState.yearVal,
+            StartYear:chartState.startYear || 0,
+            StartDate:chartState.yearVal === 5 || chartState.yearVal === 6
+                ? chartState.startTime
+                : '',
+            EndDate: chartState.yearVal === 5 ? chartState.endTime : '',
+        }
+    }
+    let params = {...public_param,...type_param}
+    //保存
+    apiChart.chartSave(params).then(async res=>{
+        if(res.Ret!==200) return
+        showToast("保存成功")
+        //更新缩略图
+        setChartImage()
+        //保存成功后修改route.query防止刷新后请求旧参数
+        router.replace({
+            path:'/chartETA/chartdetail',
+            query:{
+                id:route.query.id,
+                chartType:route.query.chartType,
+                chartClassifyId:route.query.chartClassifyId,
+                DateType:params.DateType,
+                StartDate:chartState.startTime,
+                EndDate:chartState.endTime,
+                Calendar:chartState.calendarType,
+                SeasonStartDate:chartState.startTime,
+                SeasonEndDate:chartState.endTime,
+                StartYear:chartState.startYear
+            }
+        })
+    })
+    
+}
+async function setChartImage(){
+    //打开保存图片弹窗
+    const svgData = highChart.value.getSVG({
+        chart: {
+            width: 340,
+            height: 230,
+        }
+    })
+    let form = new FormData();
+    form.append('Img', svgData);
+    let {Data} = await apiChart.uploadChartImg(form)
+    await apiChart.setChartImg({
+        ChartInfoId:Number(route.query.id),
+        ImageUrl:Data.ResourceUrl
+    })
+}
 let isShowSaveOtherDialog = ref(false)
 let catalogNodes = ref([])
 //另存为

+ 1 - 0
src/views/chartETA/Search.vue

@@ -66,6 +66,7 @@ function goDetail(item){
             Calendar:item.Calendar?item.Calendar:'公历',
             SeasonStartDate:item.SeasonStartDate,
             SeasonEndDate:item.SeasonEndDate,
+            StartYear:item.StartYear
         }
     })
 }