Browse Source

计算指标编辑

jwyu 1 year ago
parent
commit
86dcb633dd

+ 4 - 4
src/views/dataEDB/calculate/Detail.vue

@@ -30,10 +30,10 @@ if(route.query.type==='edit'){
 <template>
     <!-- 指标运算 -->
     <FormulaCalculate v-if="['4'].includes(source)"/>
-    <!-- 其他的运算 -->
-    <OtherCalculate v-if="['toMonthSeason','6','7','8','12','13','14','22','35','51','52','accumulate'].includes(source)" :edbInfo="edbInfo"/>
-    <!-- 拼接计算 -->
-    <JointCalculate v-if="source==='joint'"/>
+    <!-- 其他的运算 编辑时toMonthSeason=5\61 accumulate=62\63 -->
+    <OtherCalculate v-if="['toMonthSeason','5','6','7','8','12','13','14','22','35','51','52','61','62','63','accumulate'].includes(source)" :edbInfo="edbInfo"/>
+    <!-- 拼接计算 编辑时则为 23\24 -->
+    <JointCalculate v-if="['joint','23','24'].includes(source)" :edbInfo="edbInfo"/>
     <!-- 拟合残差计算 -->
     <FittingResidualsCalculate v-if="source==='37'"/>
     <!-- 扩散指数计算 -->

+ 52 - 4
src/views/dataEDB/calculate/components/JointCalculate.vue

@@ -1,6 +1,6 @@
 <script setup>
 import apiDataEDB from '@/api/dataEDB'
-import {ref,reactive, computed} from 'vue'
+import {ref,reactive, computed,watch} from 'vue'
 import SelectEDB from './SelectEDB.vue'
 import SelectEDBClassify from '../../components/SelectEDBClassify.vue'
 import SelectEDBUnit from '../../components/SelectEDBUnit.vue'
@@ -12,6 +12,52 @@ import { useRoute, useRouter } from 'vue-router'
 const route=useRoute()
 const router=useRouter()
 
+const props=defineProps({
+    edbInfo:{
+        type:Object,
+        default:null
+    }
+})
+watch(
+    ()=>props.edbInfo,
+    ()=>{
+        if(route.query.type==='edit'){
+            const edbInfoData=props.edbInfo.EdbInfoDetail
+            if(edbInfoData.Source===24){//累计同比拼接
+                tabActive.value=2
+            }else{
+                tabActive.value=1
+                jointDate.value=edbInfoData.CalculateFormula
+            }
+            const temBeforeEDBInfo=props.edbInfo.CalculateList.find(item => item.FromTag === 'A')
+            const temAfterEDBInfo=props.edbInfo.CalculateList.find(item => item.FromTag === 'B')
+            beforeEDBInfo.value={
+                EdbName:temBeforeEDBInfo.FromEdbName,
+                EdbInfoId:temBeforeEDBInfo.FromEdbInfoId,
+                EndDate:temBeforeEDBInfo.EndDate,
+                StartDate:temBeforeEDBInfo.StartDate
+            }
+            afterEBDInfo.value={
+                EdbName:temAfterEDBInfo.FromEdbName,
+                EdbInfoId:temAfterEDBInfo.FromEdbInfoId,
+                EndDate:temAfterEDBInfo.EndDate,
+                StartDate:temAfterEDBInfo.StartDate
+            }
+            
+            baseInfo.name=edbInfoData.EdbName
+            baseInfo.unit=edbInfoData.Unit
+            baseInfo.classify=edbInfoData.ClassifyId
+            baseInfo.frequency=edbInfoData.Frequency
+
+
+            setTimeout(() => {
+                selectEDBClassifyINS.value?.getSelectClassifyOpt(props.edbInfo.EdbInfoDetail.ClassifyId)//获取选择的分类目录
+            }, 1000);
+        }
+    }
+)
+
+
 //公式说明
 const tipsConfig=new Map([
 	[1,`
@@ -99,6 +145,7 @@ function onConfirmSelectUnit(value){
 //选择分类
 const showSelectClassify=ref(false)
 const classifyStr=ref('')
+const selectEDBClassifyINS=ref(null)
 function handleConfirmClassify({value,selectedOptions}){
     baseInfo.classify=value
     classifyStr.value=`${selectedOptions[0].ClassifyName}/${selectedOptions[1].ClassifyName}/${selectedOptions[2].ClassifyName}`
@@ -164,10 +211,10 @@ async function handleSave(){
         Source:24
     }
     saveBtnLoading.value=true
-    const res=await apiDataEDB.addCalculateEDB(params)
+    const res=route.query.type==='edit'?await apiDataEDB.editCalculateEDB({...params,EdbInfoId:Number(route.query.edbInfoId)}) : await apiDataEDB.addCalculateEDB(params)
     saveBtnLoading.value=false
     if(res.Ret===200){
-        showToast('新增成功')
+        showToast(route.query.type==='edit'?'编辑成功':'新增成功')
         setTimeout(() => {
             router.back()
         }, 1500);
@@ -187,6 +234,7 @@ async function handleSave(){
             title-inactive-color="#333" 
             line-width="16px"
             @change="handleTabChange"
+            v-if="$route.query.type!=='edit'"
         >
             <van-tab 
                 :title="tab.label" 
@@ -316,7 +364,7 @@ async function handleSave(){
     <SelectEDBUnit v-model:show="showSelectUnit" @select="onConfirmSelectUnit"/>
 
     <!-- 选择分类 -->
-    <SelectEDBClassify v-model:show="showSelectClassify" @select="handleConfirmClassify" />
+    <SelectEDBClassify ref="selectEDBClassifyINS" :defaultId="baseInfo.classify" v-model:show="showSelectClassify" @select="handleConfirmClassify" />
 
     <!-- 选择频度 -->
     <SelectEDBFrequency v-model:show="showSelectFrequency" @select="handleConfirmFrequency"/>

+ 35 - 1
src/views/dataEDB/calculate/components/OtherCalculate.vue

@@ -24,7 +24,33 @@ watch(
     ()=>props.edbInfo,
     ()=>{
         if(route.query.type==='edit'){
+            const fromEdbInfo=props.edbInfo.CalculateList[0]
+            const edbInfoData=props.edbInfo.EdbInfoDetail
+            searchEDBInfoByCode(fromEdbInfo.FromEdbCode)
+            baseInfo.name=edbInfoData.EdbName
+            baseInfo.unit=edbInfoData.Unit
+            baseInfo.classify=edbInfoData.ClassifyId
+            baseInfo.frequency=edbInfoData.Frequency
+            if(edbInfoData.Source===51){//降频
+                baseInfo.valueType=edbInfoData.CalculateFormula
+            }
+            if(edbInfoData.Source===35){//超季节性
+                baseInfo.calendarType=edbInfoData.Calendar
+            }
+            if(edbInfoData.Source===22){//时间位移
+                baseInfo.moveType=edbInfoData.MoveType
+                baseInfo.moveUnit=edbInfoData.MoveFrequency
+                baseInfo.moveVal=edbInfoData.CalculateFormula
+            }
+            if([8,12,13,35].includes(edbInfoData.Source)){
+                baseInfo.numberN=Number(edbInfoData.CalculateFormula)
+            }
+            
+            
 
+            setTimeout(() => {
+                selectEDBClassifyINS.value?.getSelectClassifyOpt(props.edbInfo.EdbInfoDetail.ClassifyId)//获取选择的分类目录
+            }, 1000);
         }
     }
 )
@@ -92,6 +118,14 @@ function handleConfirmSelectEDB(e){
     selectEDBinfo.value=e
     updateBaseInfoData(e)
 }
+// 编辑时回显选择的指标 通过code去搜索
+function searchEDBInfoByCode(code){
+    apiDataEDB.edbSearchList({KeyWord:code,CurrentIndex:1,PageSize:1}).then(res=>{
+        if(res.Ret===200){
+            selectEDBinfo.value=res.Data?.List[0]
+        }
+    })
+}
 
 // 选择指标更新基础信息
 function updateBaseInfoData(data){
@@ -229,7 +263,7 @@ async function handleSave(){
     }
 
     saveBtnLoading.value=true
-    const res=await apiDataEDB.addCalculateEDB(params)
+    const res=route.query.type==='edit'?await apiDataEDB.editCalculateEDB({...params,EdbInfoId:Number(route.query.edbInfoId)}) : await apiDataEDB.addCalculateEDB(params)
     saveBtnLoading.value=false
     if(res.Ret===200){
         showToast(res.Msg)