Browse Source

积分规则效验

Xiao_123 1 year ago
parent
commit
b63edb6519

+ 2 - 1
src/views/menduner/reward/integral/check.js

@@ -2,8 +2,9 @@ export function checkObjectValues(obj) {
   // 遍历对象的每个属性
   for (let key in obj) {
     if (obj.hasOwnProperty(key)) {
+      if (obj?.type === 'RELATION') return true
       // 检查键的值是否存在且不为空
-      if (obj[key] === undefined || obj[key] === null || obj[key] === '') {
+      else if (obj[key] === undefined || obj[key] === null || obj[key] === '') {
         return false // 如果发现空值,返回false
       }
       // 如果当前属性是children且为数组,则递归检查children中的每个对象

+ 7 - 8
src/views/menduner/reward/integral/condition.vue

@@ -20,7 +20,7 @@
             <el-button text circle @click="handleDelete(i)">
               <Icon icon="ep:close" />
             </el-button>
-            <el-button v-if="list.length >= 2" @click="handleItemAdd(i)" text><Icon class="mr-5px" icon="ep:plus" />并且满足</el-button>
+            <el-button v-if="list.length >= 2" @click="handleItemAdd(i, val)" text><Icon class="mr-5px" icon="ep:plus" />并且满足</el-button>
           </el-col>
         </el-row>
         <template v-else>
@@ -44,7 +44,7 @@
                   <el-button text circle @click="handleDelete(index, val.children, i)">
                     <Icon icon="ep:close" />
                   </el-button>
-                  <el-button v-if="index === 0" @click="handleItemAdd(index, val.children)" text><Icon class="mr-5px" icon="ep:plus" />并且满足</el-button>
+                  <el-button v-if="index === 0" @click="handleItemAdd(index, _val, val.children)" text><Icon class="mr-5px" icon="ep:plus" />并且满足</el-button>
                 </el-col>
               </el-row>
               <div class="relation">
@@ -111,9 +111,8 @@ const handleAdd = () => {
 // 删除筛选条件
 const handleDelete = (index, arr, parentIndex) => {
   if (arr && arr.length) {
-    // 当children长度为2时变回一级
     if (arr.length === 2) {
-      list.value[parentIndex] = { key: '', operation: '', value: '', type: 'EXPRESSION', children: [] }
+      list.value[parentIndex] = arr[index]
       return
     }
     arr.splice(index, 1)
@@ -137,13 +136,13 @@ const handleActive = (k, arr, parentVal) => {
 }
 
 // 并且满足
-const handleItemAdd = (i, arr) => {
+const handleItemAdd = (i, val, arr) => {
   const obj = { key: '', operation: '', value: '', type: 'EXPRESSION', children: [] }
   const item = {
     type: 'RELATION',
     operation: 'AND',
     relationList: cloneDeep(relationList.value),
-    children: [cloneDeep(obj), cloneDeep(obj)]
+    children: [val, cloneDeep(obj)]
   }
   if (arr && arr.length) return arr.push(cloneDeep(obj))
   list.value.splice(i, 1, item)
@@ -179,8 +178,8 @@ watch(
 
 const result = {}
 const getQuery = () => {
-  // const check = list.value.every(e => checkObjectValues(e))
-  // if (!check) return message.warning('请将条件中的项填写完整')
+  const check = list.value.every(e => checkObjectValues(e))
+  if (!check) return message.warning('请将条件中的项填写完整')
 
   if (list.value.length === 1) result.value = list.value[0]
   else result.value = { ...query.value, children: list.value }