浏览代码

指标运算改版

Karsa 1 年之前
父节点
当前提交
a55656baa0
共有 1 个文件被更改,包括 28 次插入14 次删除
  1. 28 14
      src/views/dataEDB/calculate/components/FormulaCalculate.vue

+ 28 - 14
src/views/dataEDB/calculate/components/FormulaCalculate.vue

@@ -36,11 +36,20 @@ watch(
                     name:item.FromEdbName
                 }
             })
-            formulaVal.value=props.edbInfo.EdbInfoDetail.CalculateFormula
+            formulaList.value= JSON.parse(props.edbInfo.EdbInfoDetail.CalculateFormula).map(_ =>({
+                formula: _.f,
+                date: _.d
+            }))
             baseInfo.name=props.edbInfo.EdbInfoDetail.EdbName
             baseInfo.unit=props.edbInfo.EdbInfoDetail.Unit
             baseInfo.classify=props.edbInfo.EdbInfoDetail.ClassifyId
             baseInfo.frequency=props.edbInfo.EdbInfoDetail.Frequency
+            baseInfo.nullValueWay=props.edbInfo.EdbInfoDetail.EmptyType
+            baseInfo.maxNullWay=props.edbInfo.EdbInfoDetail.MaxEmptyType
+
+            nullWayStr.value = nullWayOptions.value.find(_ =>_.value===baseInfo.nullValueWay).label
+            maxNullStr.value = maxNullWayOptions.value.find(_=>_.value===baseInfo.maxNullWay).label
+
             setTimeout(() => {
                 selectEDBClassifyINS.value?.getSelectClassifyOpt(props.edbInfo.EdbInfoDetail.ClassifyId)//获取选择的分类目录
             }, 1000);
@@ -207,7 +216,7 @@ const formulaDateArr = computed(() => {
 /* 新增公式分段 */
 function addFormulaHandle() {
     let addItem = {
-        formula: formulaList.value[0].formula,
+        formula: formulaList.value[formulaList.value.length-1].formula,
         date: ''
     }
     formulaList.value.push(addItem)
@@ -245,11 +254,11 @@ function handleConfirmFormulaDate(val) {
 const nullWayStr = ref('查找前后35天最近值')
 const showNullValPoup = ref(false)
 const nullWayOptions = ref([
-    { label: '查找前后35天最近值',value: 1 },
-    { label: '不计算',value: 2 },
-    { label: '前值填充',value: 3 },
-    { label: '后值填充',value: 4 },
-    { label: '等于0',value: 5 },
+    { label: '查找前后35天最近值',value: 0 },
+    { label: '不计算',value: 1 },
+    { label: '前值填充',value: 2 },
+    { label: '后值填充',value: 3 },
+    { label: '等于0',value: 4 },
 ])
 function onConfirmNullWay(e) {
     baseInfo.nullValueWay = e.selectedValues[0]
@@ -262,14 +271,14 @@ function onConfirmNullWay(e) {
 const showMaxNullDeal = computed(()=> {
     let haveMaxOrMin = formulaList.value.some(_ => _.formula.toUpperCase().includes('MAX') || _.formula.toUpperCase().includes('MIN'))
 
-    return haveMaxOrMin && baseInfo.nullValueWay===5
+    return haveMaxOrMin && baseInfo.nullValueWay===4
 })
 //max空值处理
 const maxNullStr = ref('等于0')
 const showMaxNullValPoup = ref(false)
 const maxNullWayOptions = ref([
-    { label: '等于0',value: '等于0' },
-    { label: '跳过空值',value: '跳过空值' },
+    { label: '等于0',value: 1 },
+    { label: '跳过空值',value: 2 },
 ])
 function onConfirmMaxNullWay(e) {
     baseInfo.maxNullWay = e.selectedValues[0]
@@ -295,7 +304,7 @@ const formTips = ref({
 
 // 提交计算
 async function handleSave(){
-    if(!formulaVal.value){
+    if(!formulaList.value[0].formula){
         showToast('计算公式不能为空')
         return
     }
@@ -321,13 +330,18 @@ async function handleSave(){
             FromTag: item.tag,
         }
     })
+
+    let CalculateFormula = JSON.stringify(formulaList.value.map(_ => ({ f:_.formula,d: _.date })))
+
     const params={
-        CalculateFormula:formulaVal.value,
+        CalculateFormula,
         ClassifyId:baseInfo.classify,
         EdbName:baseInfo.name,
         Frequency:baseInfo.frequency,
         Unit:baseInfo.unit,
-        EdbInfoIdArr:arr
+        EdbInfoIdArr:arr,
+        EmptyType:baseInfo.nullValueWay,
+        MaxEmptyType:baseInfo.maxNullWay
     }
     const edbInfoId=route.query.edbInfoId
     const res=edbInfoId?await apiDataEDB.editCalculateFormula({...params,EdbInfoId:Number(edbInfoId)}):await apiDataEDB.addCalculateFormula(params)
@@ -463,7 +477,7 @@ async function handleSave(){
                     </li>
                     <li class="formula-tips">
                         <p class="en-text-wrap">公式示例:A*0.5+B*C*1.2+120-MAX(A,B,C)</p>
-                        <p class="en-text-wrap">函数支持:MAX(),MIN(),ln(A),log(a,A)</p>
+                        <p class="en-text-wrap">函数支持:MAX(),MIN(),ln(A),log(a,A),abs(),exp(),pow(),round()</p>
                     </li>
                 </ul>