瀏覽代碼

v1.7.1_EDB

jwyu 1 年之前
父節點
當前提交
ba6e11fd4a

+ 9 - 1
src/views/dataEDB/Detail.vue

@@ -101,7 +101,15 @@ function handleEdit(){
     }
     // 计算指标
     if(data.EdbType === 2 && ![27,40,58,59].includes(data.Source)){
-        showToast('待开发,计算指标请在pc端操作')
+        router.push({
+            path:'/dataEDB/calculate/detail',
+            query:{
+                source:data.Source,
+                name:data.SourceName,
+                edbInfoId:data.EdbInfoId,
+                type:'edit'
+            }
+        })
     }
     //代码运算
     if(data.Source===27){

+ 19 - 6
src/views/dataEDB/calculate/Detail.vue

@@ -1,5 +1,6 @@
 <script setup name="DataEDBCalculateDetail">
 import {ref} from 'vue'
+import apiDataEDB from '@/api/dataEDB'
 import { useRoute } from "vue-router";
 import DiffusionIndexCalcualate from './components/DiffusionIndexCalcualate.vue';
 import FittingResidualsCalculate from './components/FittingResidualsCalculate.vue';
@@ -8,21 +9,33 @@ import JointCalculate from './components/JointCalculate.vue';
 import OtherCalculate from './components/OtherCalculate.vue';
 
 const route=useRoute()
-const type=ref(route.query.type||'')//计算类型
+const source=ref(route.query.source||'')//计算类型
 document.title=route.query.name||'指标运算'
 
+// 获取计算指标详情
+const edbInfo=ref(null)
+async function getCalculateInfo(){
+    const res=await apiDataEDB.getCalculateEdbInfo({EdbInfoId:Number(route.query.edbInfoId)})
+    if(res.Ret===200){
+        edbInfo.value=res.Data
+    }
+}
+if(route.query.type==='edit'){
+    getCalculateInfo()
+}
+
  
 </script>
 
 <template>
     <!-- 指标运算 -->
-    <FormulaCalculate v-if="['4'].includes(type)"/>
+    <FormulaCalculate v-if="['4'].includes(source)"/>
     <!-- 其他的运算 -->
-    <OtherCalculate v-if="['toMonthSeason','6','7','8','12','13','14','22','35','51','52','accumulate'].includes(type)"/>
+    <OtherCalculate v-if="['toMonthSeason','6','7','8','12','13','14','22','35','51','52','accumulate'].includes(source)"/>
     <!-- 拼接计算 -->
-    <JointCalculate v-if="type==='joint'"/>
+    <JointCalculate v-if="source==='joint'"/>
     <!-- 拟合残差计算 -->
-    <FittingResidualsCalculate v-if="type==='37'"/>
+    <FittingResidualsCalculate v-if="source==='37'"/>
     <!-- 扩散指数计算 -->
-    <DiffusionIndexCalcualate v-if="type==='53'"/>
+    <DiffusionIndexCalcualate v-if="source==='53'" :edbInfo="edbInfo"/>
 </template>

+ 1 - 1
src/views/dataEDB/calculate/Index.vue

@@ -19,7 +19,7 @@ function handleGoDetail(item){
     router.push({
         path:'/dataEDB/calculate/detail',
         query:{
-            type:item.type,
+            source:item.type,
             name:item.name
         }
     })

+ 42 - 5
src/views/dataEDB/calculate/components/DiffusionIndexCalcualate.vue

@@ -1,7 +1,7 @@
 <script setup>
 import apiDataEDB from '@/api/dataEDB'
 import { showToast } from 'vant';
-import {computed, reactive, ref} from 'vue'
+import {computed, nextTick, reactive, ref, watch} from 'vue'
 import SelectEDB from './SelectEDB.vue'
 import SelectEDBClassify from '../../components/SelectEDBClassify.vue'
 import SelectEDBUnit from '../../components/SelectEDBUnit.vue'
@@ -10,14 +10,50 @@ import {calculateTypeTipsMap} from '../../util/config'
 import { useRoute, useRouter } from 'vue-router';
 import moment from 'moment';
 
+const props=defineProps({
+    edbInfo:{
+        type:Object,
+        default:null
+    }
+})
+
+watch(
+    ()=>props.edbInfo,
+    ()=>{
+        if(route.query.type==='edit'){
+            edbList.value=props.edbInfo.CalculateList.map(item=>{
+                return {
+                    tag:item.FromTag,
+                    target:item.FromEdbInfoId,
+                    startDate:item.StartDate,
+                    endDate:item.EndDate,
+                    name:item.FromEdbName
+                }
+            })
+            const obj=JSON.parse(props.edbInfo.EdbInfoDetail.CalculateFormula)
+            dateContactState.type=obj.DateType//会触发radio的change事件 所有下面用个nextTick
+            nextTick(()=>{
+                dateContactState.list=obj.CheckList
+            })
+            baseInfo.name=props.edbInfo.EdbInfoDetail.EdbName
+            baseInfo.unit=props.edbInfo.EdbInfoDetail.Unit
+            baseInfo.classify=props.edbInfo.EdbInfoDetail.ClassifyId
+            baseInfo.frequency=props.edbInfo.EdbInfoDetail.Frequency
+            setTimeout(() => {
+                selectEDBClassifyINS.value?.getSelectClassifyOpt(props.edbInfo.EdbInfoDetail.ClassifyId)//获取选择的分类目录
+            }, 1000);
+        }
+    }
+)
+
 const route=useRoute()
 const router=useRouter()
 
-const source=ref(Number(route.query.type)||0)//计算类型
+const source=ref(Number(route.query.source)||0)//计算类型
 
 //公式说明
 const showTips=ref(false)
-const tipsContent=ref(calculateTypeTipsMap.get(Number(route.query.type))||'')
+const tipsContent=ref(calculateTypeTipsMap.get(Number(route.query.source))||'')
 
 
 const letterOpts = [];//字母数据
@@ -121,6 +157,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}`
@@ -171,7 +208,7 @@ async function handleSave(){
         EdbInfoIdArr:arr
     }
     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)
@@ -305,7 +342,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"/>

+ 2 - 2
src/views/dataEDB/calculate/components/FittingResidualsCalculate.vue

@@ -14,11 +14,11 @@ import moment from 'moment'
 const route=useRoute()
 const router=useRouter()
 
-const source=ref(Number(route.query.type)||0)//计算类型
+const source=ref(Number(route.query.source)||0)//计算类型
 
 //公式说明
 const showTips=ref(false)
-const tipsContent=ref(calculateTypeTipsMap.get(['toMonthSeason','accumulate'].includes(route.query.type)? route.query.type: Number(route.query.type))||'')
+const tipsContent=ref(calculateTypeTipsMap.get(['toMonthSeason','accumulate'].includes(route.query.source)? route.query.source: Number(route.query.source))||'')
 
 // 获取两个指标的相关系数
 const correlationIndex=ref('')

+ 1 - 1
src/views/dataEDB/calculate/components/FormulaCalculate.vue

@@ -23,7 +23,7 @@ initLetterOpt()
 
 //公式说明
 const showTips=ref(false)
-const tipsContent=ref(calculateTypeTipsMap.get(Number(route.query.type))||'')
+const tipsContent=ref(calculateTypeTipsMap.get(Number(route.query.source))||'')
 
 //选择的指标集合
 const edbList=ref([

+ 4 - 4
src/views/dataEDB/calculate/components/OtherCalculate.vue

@@ -24,7 +24,7 @@ const moveUnitOpts=[
 
 //公式说明
 const showTips=ref(false)
-const tipsContent=ref(calculateTypeTipsMap.get(['toMonthSeason','accumulate'].includes(route.query.type)? route.query.type: Number(route.query.type))||'')
+const tipsContent=ref(calculateTypeTipsMap.get(['toMonthSeason','accumulate'].includes(route.query.source)? route.query.source: Number(route.query.source))||'')
 
 //提交计算按钮文字
 function getCalculateBtnText(){
@@ -56,15 +56,15 @@ const tabsArr=ref([])
 // 初始化
 function init(){
     // 累计值转月/季值
-    if(route.query.type==='toMonthSeason'){
+    if(route.query.source==='toMonthSeason'){
         tabsArr.value=[{ label: '累计值转月值',key: 5 },{ label: '累计值转季值',key: 61 }]
         source.value=5
-    }else if(route.query.type==='accumulate'){//累计值
+    }else if(route.query.source==='accumulate'){//累计值
         tabsArr.value=[{ label: '累计值',key: 62 },{ label: '年初至今累计值',key: 63 }]
         source.value=62
     }else{
         tabsArr.value=[]
-        source.value=Number(route.query.type)
+        source.value=Number(route.query.source)
     }
 }
 init()