Ver Fonte

入住申请增加数据校验

unknown há 2 semanas atrás
pai
commit
26388d059f

+ 82 - 21
src/views/elderly/apply/check-in/Check.vue

@@ -40,6 +40,86 @@ const handleClosed = () => {
   dialogVisible.value = false
 }
 
+/** 校验表单数据完整性 */
+const validateForm = (dataForm: any): boolean => {
+  // 校验月度固定费用项目
+  if (dataForm.expenseBO?.monthlyExpenses?.length > 0) {
+    for (let i = 0; i < dataForm.expenseBO.monthlyExpenses.length; i++) {
+      const item = dataForm.expenseBO.monthlyExpenses[i]
+      if (!item.itemCategoryId) {
+        message.error(`请选择月度固定项目${i + 1}的项目类别`)
+        return false
+      }
+      if (!item.itemId) {
+        message.error(`请选择月度固定项目${i + 1}的项目名称`)
+        return false
+      }
+      if (!item.actualAmount || item.actualAmount <= 0) {
+        message.error(`请输入月度固定项目${i + 1}的费用金额`)
+        return false
+      }
+    }
+  }
+
+  // 校验一次性收费项目
+  if (dataForm.expenseBO?.oneTimeExpenses?.length > 0) {
+    for (let i = 0; i < dataForm.expenseBO.oneTimeExpenses.length; i++) {
+      const item = dataForm.expenseBO.oneTimeExpenses[i]
+      if (!item.itemCategoryId) {
+        message.error(`请选择一次性收费项目${i + 1}的项目类别`)
+        return false
+      }
+      if (!item.itemId) {
+        message.error(`请选择一次性收费项目${i + 1}的项目名称`)
+        return false
+      }
+      if (!item.actualAmount || item.actualAmount <= 0) {
+        message.error(`请输入一次性收费项目${i + 1}的费用金额`)
+        return false
+      }
+    }
+  }
+
+  // 校验阶段收费项目
+  if (dataForm.expenseBO?.stageExpenses?.length > 0) {
+    for (let i = 0; i < dataForm.expenseBO.stageExpenses.length; i++) {
+      const item = dataForm.expenseBO.stageExpenses[i]
+      if (!item.itemCategoryId) {
+        message.error(`请选择阶段收费项目${i + 1}的项目类别`)
+        return false
+      }
+      if (!item.itemId) {
+        message.error(`请选择阶段收费项目${i + 1}的项目名称`)
+        return false
+      }
+      // 检查金额:优先检查 actualAmount,如果没有则检查 amount
+      const amount = item.actualAmount || item.amount
+      if (!amount || amount <= 0) {
+        message.error(`请输入阶段收费项目${i + 1}的费用金额`)
+        return false
+      }
+      // 如果选中了分期,分期期数是必选的
+      if (item.isHirePurchase === 1 && !item.hirePurchaseNumber) {
+        message.error(`请选择阶段收费项目${i + 1}的分期期数`)
+        return false
+      }
+      // 如果选中了赠送,赠送时间是必选的
+      if (item.isFreeGift === 1) {
+        if (!item.freeStartTime) {
+          message.error(`请选择阶段收费项目${i + 1}的赠送开始时间`)
+          return false
+        }
+        if (!item.freeEndTime) {
+          message.error(`请选择阶段收费项目${i + 1}的赠送结束时间`)
+          return false
+        }
+      }
+    }
+  }
+
+  return true
+}
+
 /** 提交表单 */
 const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
 const submitForm = async () => {
@@ -53,28 +133,9 @@ const submitForm = async () => {
     if(!valid){
       return
     }
-    let isR = false
-    dataForm.expenseBO.monthlyExpenses.map((item)=>{
-      if(item.actualAmount.toString().trim()==''){
-        isR = true
-        return
-      }
-    })
-    dataForm.expenseBO.oneTimeExpenses.map((item)=>{
-      if(!item.actualAmount || item.actualAmount.toString().trim()==''){
-        isR = true
-        return
-      }
-    })
-    dataForm.expenseBO.stageExpenses.map((item)=>{
-      if(item.amount.toString().trim()==''){
-        isR = true
-        return
-      }
-    })
 
-    if(isR){
-      message.error('请检查费用或其他信息的完整性!')
+    // 校验费用数据完整性
+    if (!validateForm(dataForm)) {
       return
     }
 

+ 105 - 18
src/views/elderly/apply/check-in/ToLong.vue

@@ -42,29 +42,116 @@ const handleClosed = () => {
   dialogVisible.value = false
 }
 
+/** 校验表单数据完整性 */
+const validateForm = (dataForm: any): boolean => {
+  // 校验月度固定费用项目
+  if (dataForm.expenseBO?.monthlyExpenses?.length > 0) {
+    for (let i = 0; i < dataForm.expenseBO.monthlyExpenses.length; i++) {
+      const item = dataForm.expenseBO.monthlyExpenses[i]
+      if (!item.itemCategoryId) {
+        message.error(`请选择月度固定项目${i + 1}的项目类别`)
+        return false
+      }
+      if (!item.itemId) {
+        message.error(`请选择月度固定项目${i + 1}的项目名称`)
+        return false
+      }
+      if (!item.actualAmount || item.actualAmount <= 0) {
+        message.error(`请输入月度固定项目${i + 1}的费用金额`)
+        return false
+      }
+    }
+  }
+
+  // 校验一次性收费项目
+  if (dataForm.expenseBO?.oneTimeExpenses?.length > 0) {
+    for (let i = 0; i < dataForm.expenseBO.oneTimeExpenses.length; i++) {
+      const item = dataForm.expenseBO.oneTimeExpenses[i]
+      if (!item.itemCategoryId) {
+        message.error(`请选择一次性收费项目${i + 1}的项目类别`)
+        return false
+      }
+      if (!item.itemId) {
+        message.error(`请选择一次性收费项目${i + 1}的项目名称`)
+        return false
+      }
+      if (!item.actualAmount || item.actualAmount <= 0) {
+        message.error(`请输入一次性收费项目${i + 1}的费用金额`)
+        return false
+      }
+    }
+  }
+
+  // 校验阶段收费项目
+  if (dataForm.expenseBO?.stageExpenses?.length > 0) {
+    for (let i = 0; i < dataForm.expenseBO.stageExpenses.length; i++) {
+      const item = dataForm.expenseBO.stageExpenses[i]
+      if (!item.itemCategoryId) {
+        message.error(`请选择阶段收费项目${i + 1}的项目类别`)
+        return false
+      }
+      if (!item.itemId) {
+        message.error(`请选择阶段收费项目${i + 1}的项目名称`)
+        return false
+      }
+      // 检查金额:优先检查 actualAmount,如果没有则检查 amount
+      const amount = item.actualAmount || item.amount
+      if (!amount || amount <= 0) {
+        message.error(`请输入阶段收费项目${i + 1}的费用金额`)
+        return false
+      }
+      // 如果选中了分期,分期期数是必选的
+      if (item.isHirePurchase === 1 && !item.hirePurchaseNumber) {
+        message.error(`请选择阶段收费项目${i + 1}的分期期数`)
+        return false
+      }
+      // 如果选中了赠送,赠送时间是必选的
+      if (item.isFreeGift === 1) {
+        if (!item.freeStartTime) {
+          message.error(`请选择阶段收费项目${i + 1}的赠送开始时间`)
+          return false
+        }
+        if (!item.freeEndTime) {
+          message.error(`请选择阶段收费项目${i + 1}的赠送结束时间`)
+          return false
+        }
+      }
+    }
+  }
+
+  return true
+}
+
 /** 提交表单 */
 const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
 const submitForm = async () => {
   let { valid, dataForm } = await processFormRef.value.submitForm()
-  if (valid) {
-    try {
-      formLoading.value = true
-      console.log("是是是:",itemRow.value.toLong,dataForm)
-      let res = undefined
-      //if(itemRow.value.toLong==1){ //试住转长住
-       //  res = await renewContractLong(dataForm)
-     // }else {//入住办理
-         res = await checkInCreate(dataForm)
-     // }
-      if (res) {
-        message.success(t('common.updateSuccess'))
-        handleClosed()
-        // 发送操作成功的事件
-        emit('success')
-      }
-    } finally {
-      formLoading.value = false
+  if (!valid) {
+    return
+  }
+
+  // 校验费用数据完整性
+  if (!validateForm(dataForm)) {
+    return
+  }
+
+  try {
+    formLoading.value = true
+    console.log("是是是:",itemRow.value.toLong,dataForm)
+    let res = undefined
+    //if(itemRow.value.toLong==1){ //试住转长住
+     //  res = await renewContractLong(dataForm)
+   // }else {//入住办理
+       res = await checkInCreate(dataForm)
+   // }
+    if (res) {
+      message.success(t('common.updateSuccess'))
+      handleClosed()
+      // 发送操作成功的事件
+      emit('success')
     }
+  } finally {
+    formLoading.value = false
   }
 }
 </script>

+ 2 - 1
src/views/elderly/elder/bed-change/ProcessForm.vue

@@ -255,7 +255,7 @@
           </el-col>
           <el-col :xs="24" :sm="24" :md="24" :lg="processType == 2 ? 24 : 8">
             <el-form-item label="床位号" prop="expectId">
-              <TgInput v-model="dataForm.bedName" :toggleType="isDetail" />
+              <TgInput v-model="dataForm.expectBedName" :toggleType="isDetail" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -384,6 +384,7 @@ const state = reactive({
     changeDate: formatTime(Date.now(), 'yyyy-MM-dd'),
     expectId: '', // 现床位id
     expectName: '', // 床位类型名称
+    expectBedName: '', // 床位类型名称
     isPrivateRoom: '',
     overheadChargeId: '', // 原床位类型id
     expectOverheadChargeId: '', // 现床位类型id